当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
之间有什么区别?
答案 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);
}