关于C语言中的自加运算

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:31:42
for(i=0;i<5;i++){printf("%d ",i);}

for(i=0;i<5;++i){printf("%d ",i);}
的运行结果为什么都是
0 1 2 3 4
个人认为后者应该是
1 2 3 4 没有0
哪位高手给解释一下

后者还是0 1 2 3 4,自加在这里++i和i++是一样的,for循环是这样运行的:i=0时,检验i是不是<5,如果是进入循环体输入了i也就是0,然后执行f最后一个一个语句i++或者++i,获得新的i,继续循环,所以这里++i和i++是一样的,都相当于i+1。
如果说表达式是int a,b,c,d;
a=b=0;
c=a++; //相当于c=a;a++;结果是c的值为0;a的值为1
d=++b; //相当于b++;d=b;结果是d的值为1;b的值为1
你所说的问题中不涉及到先加后用还是先用后加的问题。
我水平有限,希望你听懂了,谢谢,好好学习,天天向上。

for循环语句
for(1.循环变量赋初值;2.循环条件3.变量自加减运算)
{
语句}
执行顺序:先执行表达式1,再判断表达式2,如为真,则执行{语句},然后执行表达式3,然后再回到表达式2判断循环条件.如果先执行表达式1后
再判断表达式2,如为假.则执行for语句之后的语句,即跳出for循环

所以结果一样.

因为你的 i++和++i都是在每次循环的末尾执行的,因此结果一样。也就是说你的printf("%d ",i) 先于自加执行。
如果去掉循环控制里面的自加,而把 printf里面的 i 改成 i++ 和 ++i 就会出线不同结果了。

for(i=0;i<5;){printf("d%",i++);}
结果0,1,2,3,4


for(i=0;i<5;){printf("d%",++i);}
结果1,2,3,4,5

for语句的执行循序是这样的
先执行第一个表达式i = 0;
然后判断第二个表达式 i < 5 是否成立,
成立则执行循环体里的语句 printf;
不成立则退出for循环。