读书人

for循环中的条件也能执行计算吗

发布时间: 2013-06-25 23:45:41 作者: rapoo

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 ?
不知道我这样理解对不对,请高手指教!for循环中的条件也能执行计算吗 c
[解决办法]

引用:
Quote: 引用:

for( ;x>0;x--)//这里每次循环后都自减了
{
x--;//这里就不必自减了
...
为啥大括号里面的x--不需要自减呢?
for里边的x--在每次执行完大括号的语句后会自动执行一次,所以你如果想以此输出4 3 2 1,那大括号里就不要再自减了。假如你的自减需要在某种情况下执行那么可以放在大括号最后一条来执行,这样比放在for里边灵活一些,反之放在for里边比较简便
[解决办法]
for(表达式1;表达式2;表达式3) 执行的顺序是:表达式1--表达式2--for内的语句--表达式3
所以大括号内的和表达式里的都要执行。
[解决办法]

#include <stdio.h>

int main()
{
int x=5;
for( ;x>0;)//你的写法就等价于这样。。
{
x--;//所以这句是不必要的。。
printf("%d ",x);
x--;//循环条件中的x--可以看作在循环的结尾执行
}
printf("\n");

return 0;
}

[解决办法]
int main()
{
int x=5;
for( ;x>0;x--)
{
x--;
printf("%d ",x);
}



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,条件不成立退出;

读书人网 >C语言

热点推荐