#include<stdio.h> int main(){ int value; for(value = 4; value > 0; value /=2) printf("%d",value); return 0; }
如上代码所示,书上说for循环对value > 0 进行判定后为真就先循环一次(第一次不执行update部分).
第一次循环:此时输出4,然后回到test语句(4>0);
第二次循环:判定(4>0 == 1),执行update(4/2 = 2),输出2;
第三次循环:判定(2>0==1),执行update(2/2 = 1),输出1;
第四次循环:判定(1>0==1),执行update(1/2 = 0),输出0;
第五次循环:判定(0>0 == 0),不执行update;
实际结果为只输出了4,2,1三个数值,并不会输出0,请教一下各位是为什么呢?
for语句的执行顺序是124 324 324...其余自己想吧
for(1;2;3) { 4; } 124 324 324...
第一次循环:value = 4,value > 0 => print 4;
第二次循环:value = 4 / 2,value > 0 => print 2;
第三次循环:value = 2 / 2,value > 0 => print 1;
第四次循环:value = 1 / 2,value == 0 => break;
你上面那个for循环相当于下面这个while,用while表示够直观吧:
int main(){ int value = 4; while (value > 0) { printf("%d",value); value /= 2; } return 0; }
之所以最后不输出0,是因为value已经等于0了,0是不大于0的,怎么可能再执行print呢。你可以在return之前把value输出来看看是不是等于0了。
循环分为两部分:循环条件与循环体。在这里,for()小括号里面的内容是条件,执行了4次;大括号里面的是循环体,执行了3次。
后面判断0为假就不会进了,为真才进去循环执行 为假就不进去执行了 所以不输出0