| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1015 人关注过本帖
标题:简单的循环问题
只看楼主 加入收藏
BobMaster
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2018-1-4
结帖率:85.71%
收藏
已结贴  问题点数:20 回复次数:2 
简单的循环问题
void main()
{
    int l,b,k=0;
    for(l = 1;l<=5;l++)
    {   
        b=l%2;
        while(b-->=0) k++;
    }
    cout<<k<<","<<b;
}

每次k值为2 3 5 6 8
为什么会是这样呢?
搜索更多相关主题的帖子: 循环 int for while cout 
2018-02-22 00:01
moox
Rank: 2
来 自:福建
等 级:论坛游民
帖 子:92
专家分:93
注 册:2017-1-21
收藏
得分:9 
第一次for循环:    l=1    b=1,满足while,b=b-1=0,满足while,b=b-1=-1,不满足while,结束while    k=2    退出for循环
第二次for循环:    l=2    b=0,满足while,b=b-1=-1,不满足while,结束while    k=3    退出for循环
第三次for循环:    l=3    b=1,满足while,b=b-1=0,满足while,b=b-1=-1,不满足while,结束while    k=5    退出for循环
第四次for循环:    l=4    b=0,满足while,b=b-1=-1,不满足while,结束while    k=6    退出for循环
第五次for循环:    l=5    b=1,满足while,b=b-1=0,满足while,b=b-1=-1,不满足while,结束while    k=8    退出for循环
ps:%运算符为取余,即取余数为结果,如:9%2 结果为 9/2=4余1,取9%2=1;
2018-02-22 00:28
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:11 
回复 楼主 BobMaster
因为while循环条件是b>=0,因此b=0时,while的语句里也会执行。

for首次循环:l=1;b=1;while循环两次,k递增两次,退出while循环后,k=2
for循环:l=2;b=0;while循环一次,k=3.
for循环:l=3;b=1;while循环两次,k=5.
for循环:l=4;b=0;while循环一次,k=6.
for循环:l=5;b=1;while循环两次,k=8.

每次循环,b=-2
如首次循环,当while开始判断时,b=1,执行代码块时;
b变为0,再次执行代码块后,b=-1.
最后一次又回到while判断,因为b=-1 b<0.所以不执行代码块,但是b--依然要执行一次。结果b=-2.


[此贴子已经被作者于2018-2-22 00:43编辑过]


普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2018-02-22 00:35
快速回复:简单的循环问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015137 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved