在以下代码中,当i = 0时,为什么这种情况会失败?

时间:2015-04-10 17:09:58

标签: 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);
    }
}

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

2 个答案:

答案 0 :(得分:1)

  

当i = 0

时,为什么这种情况会失败

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

时,语句才会执行
if( <condition> )

如果条件返回false(0),则不会执行if语句。一段时间循环也是如此。

换句话说,if语句用作

if ( /* Statement or condition is true */ )
    //  execute the code

对于你的问题

  

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

考虑这个for loop

int i;
for ( i = 0 ; i < 5 ; i++ )
    // some code

此循环等同于

int i;
i = 0;
while ( i < 5 )
{
    // some code
    i++;             
}

如果您的for循环包含++i而不是i++,那就是

int i;
for ( i = 0 ; i < 5 ; ++i )
    // some code

然后它等同于

int i;
i = 0;
while ( i < 5 )
{
    // some code
    ++i;             
}

因此,正如您所看到的,i++++i最后执行,因此简而言之,两个for循环都可以作为相同的

答案 1 :(得分:0)

如果我理解你的问题,那么Arun A.S的回答是正确的。如果&#39;如果&#39;语句返回0,执行将停止。这是你应该使用的代码。

 #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);
    }