首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

basic problems about the "for" loop,该如何处理

2013-08-04 
basic problems about the for loop#include stdio.hmain(){int ifor (i 0 i 0 ++i)printf(%

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

热点排行