关于C语言中的自加运算

发布时间:2024-05-11 12:23 发布:上海旅游网

问题描述:

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循环。
最后执行第三个表达式:i++或者++i
再判断第二个表达式是否成立。。。如此循环

问楼主一个问题:
单独一行
i++;
跟单独一行
++i;
有区别么?

这里不也一样吗?了解for的执行过程就知道了。

经典的教科书会这样教你理解for的执行过程:
for (变量=初值;判断退出条件;自增运算){......}
转换成while时的执行顺序就是:
变量=初值;
while (判断退出条件)
{
......
自增运算;
}

但唯一的区别就是你这道题里的情况了:++i是把i加1,然后进行条件判断.i++是先进行条件判断,不管是否符合条件,i最终是要加1的.所以要注意的是退出for循环后,i是要加1的,而while在判断条件不符退出循环后,i不会加1.这个就是不一样的地方

热点新闻