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里边的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);
}