读书人

basic problems about the quot;forquot; loop

发布时间: 2013-08-04 18:26:16 作者: rapoo

basic problems about the "for" loop

#include <stdio.h>
main()
{ int i;
for (i = 0; i = 0; ++i)
;
printf("%d\n",i);
}


上面是个非常简单的一个关于for的演示,运行结果是0,这地方我就有点不明白了,当第一次for开始后,经过initialize然后经过条件判断以后(true), 这个++i是运行还是不运行? 如果是运行了,那么第一次for结束的时候i变成1,然后重新判断条件(false),结束然后输出i,结果应该是i=1(与实际不符),如果是不运行,那么第一次for结束的时候i还是0,然后重新判断条件(true),然后++i变成1,然后再循环变成false,最后输出应该也是i=1,为什么这地方实际结果是0? 是什么细节没注意到? 求各位给点主意

[解决办法]
for (i = 0; i = 0; ++i)


第一个 i = 0 ,没问题,i初始化赋值0
第二个 i = 0,有问题,明显你的本意应该是 i ==0
那么现在 i = 0发生了什么呢? 
首先赋值 i = 0,然后把这个结果的临时变量进行判断,判断的结果是false(0即为假),立刻退出循环
所以最终 i的值是0
[解决办法]

for (i = 0; i = 0; ++i)
// 这里有短路的,所以i不会进行加1的,
第一个 i= 0; //赋初值给i;
第二个 i= 0;//重新一次赋值操作,同时不调价为0 不成立!
跳出循环,不会进行第三个的++ 操作的
所以i的值还是0

读书人网 >C++

热点推荐