首页 新闻 会员 周边 捐助

C语言初学者对for循环的一个疑问

0
[待解决问题]
#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,请教一下各位是为什么呢?

Uncle_X的主页 Uncle_X | 菜鸟二级 | 园豆:202
提问于:2016-02-29 20:46
< >
分享
所有回答(5)
0

for语句的执行顺序是124 324 324...其余自己想吧

for(1;2;3)
{
    4;
}
124 324 324... 

 

cnfanhua | 园豆:283 (菜鸟二级) | 2016-02-29 22:06
0

第一次循环: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;

jello chen | 园豆:7336 (大侠五级) | 2016-02-29 22:07
0

你上面那个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了。

KellyZheng | 园豆:237 (菜鸟二级) | 2016-02-29 22:50
0

循环分为两部分:循环条件与循环体。在这里,for()小括号里面的内容是条件,执行了4次;大括号里面的是循环体,执行了3次。

曹庆源 | 园豆:243 (菜鸟二级) | 2016-03-02 15:19
0

后面判断0为假就不会进了,为真才进去循环执行 为假就不进去执行了  所以不输出0

漂洋过海的熊 | 园豆:210 (菜鸟二级) | 2018-07-05 20:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册