C 在以下代码中,当i=0时,为什么该条件失败?

C 在以下代码中,当i=0时,为什么该条件失败?,c,C,当i变为0时,为什么该条件失败? i++表示i从-5变为-4最初i为-5时,条件如何为真 #include <stdio.h> int main() { static int i = -5; if (i++) //why does this condition fails when it becomes 0 { printf("%d ", i);//recurtion starts main(10); } } #包括

i
变为0时,为什么该条件失败?
i++
表示
i
从-5变为-4最初
i
为-5时,条件如何为真

#include <stdio.h>
int main()
{
    static int i = -5;
    if (i++) //why does this condition fails when it becomes 0
    {
        printf("%d ", i);//recurtion starts
        main(10);
    }
}
#包括
int main()
{
静态int i=-5;
if(i++)//为什么该条件变为0时会失败
{
printf(“%d”,i);//开始重复
主要工程(10);
}
}

for循环中的
i++
++i
之间有什么区别

当i=0时,为什么该条件失败

如果
if
语句中的条件返回false(等于0),则不会执行该语句。也就是说,只有当条件返回true(或非零值)时,语句才会执行

谢谢你的提问

for循环中的i++和++i有什么区别

考虑这个循环

int i;
for ( i = 0 ; i < 5 ; i++ )
    // some code
那就相当于

int i;
i = 0;
while ( i < 5 )
{
    // some code
    i++;             
}
int i;
i = 0;
while ( i < 5 )
{
    // some code
    ++i;             
}
inti;
i=0;
而(i<5)
{
//一些代码
++一,;
}

因此,正如您所看到的,
i++
++i
是最后执行的,因此简言之,如果我正确理解您的问题,那么Arun A.S回答正确,两个for循环的工作原理相同。如果“If”语句返回0,则执行将停止。这是您应该使用的代码

 #include <stdio.h>
    int main()
    {
        static int i = -5;
        if (i<10) 
        {
            ++i;
            printf("%d ", i);//recurtion starts
            main(10);
        }
    }
#包括
int main()
{
静态int i=-5;

if(iintegral)值隐式转换为bool,0表示false,所有其他值表示true。此外,由于调用main,程序的格式不正确,因此没有理由在
main()
中创建变量
static
int i;
for ( i = 0 ; i < 5 ; ++i )
    // some code
int i;
i = 0;
while ( i < 5 )
{
    // some code
    ++i;             
}
 #include <stdio.h>
    int main()
    {
        static int i = -5;
        if (i<10) 
        {
            ++i;
            printf("%d ", i);//recurtion starts
            main(10);
        }
    }
 #include <stdio.h>
    int recursion(int user_num){
    static int i = -5;
        if (i<user_num)
        {
            ++i;
            printf("%d ", i);//recurtion starts
            recursion(user_num);
        }
    }

    int main()
    { int user_num;
    scanf("%d",&user_num);
    recursion(user_num);
    }