for循环中的条件也会执行计算吗?
int main()
{
int x=5;
for( ;x>0;x--)
{
x--;
printf("%d ",x);
}
printf("\n");
return 0;
}
运行的结果是:4 2 0; 不明白为什么这样结果,按照之前学的理解是应该是:4 3 2 1;难道在执行循环的时候,循环条件( ; x>0;x--)中的x--也会先运行一遍,导致第2次循环的时候进入到{ x--,printf("%d",x)} 中时,x已经其实是3了,然后执行x--,打印出来2 ?
不知道我这样理解对不对,请高手指教!
c
[解决办法]
#include <stdio.h>
int main()
{
int x=5;
for( ;x>0;)//你的写法就等价于这样。。
{
x--;//所以这句是不必要的。。
printf("%d ",x);
x--;//循环条件中的x--可以看作在循环的结尾执行
}
printf("\n");
return 0;
}
printf("\n");
return 0;
}
第一次:x=5,x>0成立,x--后得到4;打印4
在for循环中 x--后x = 3;
第二次:x=3,x>0成立,x--后得到2;打印2
在for循环中 x--后x = 1;
第三次:x=1,x>0成立,x--后得到0;打印2
在for循环中 x--后x = -1,条件不成立退出;