for 循环 and while 循环(二)

for循环 and while循环

  • (1)for/while 循环表示遍历迭代

1. for/while 与 if/else

  • (1)循环内部无 if/else

    while (){
        ... 
    }

    每次进入循环的流程都是一致的;

  • (2)循环内部只有 if

    while (){
        if (){
            ....
        }
    }   

    符合条件的执行,表示过滤;
    不符合条件的什么也不做

  • (3)循环内部既有 if 也有 else

    while (){
        if (){
            ...
        } else{
            ...
        }
    }

    每次进入循环,执行不同的分支;

2. 循环退出时

1. while (lo < hi){
2.  ...
3. }
4. 

循环退出时,只能说明 lo >= hi,或者循环退出,或者根本就未进入循环,无论何种情况,执行到语句 4 时,仅能保证,lo >= hi,而不能保证 lo == hi。除非进入循环,且每次对 lo 进行自加1 或对 hi 进行自减。

3. for 循环与 while 循环的等价性

for(;i<n;)==while(i<n)for(;i++<n;)==while(i++<n)

int i = 0;
for (; i < 10; ){
    ++i;
}
i = 0;
while (i < 10){
    ++i;
}

参见 for 循环的流程图等价形式

4. 再论 while 循环与自加/自减运算

int cnt = 7;
while (cnt-- > 0){
    cout << cnt << " ";
}           // 6, 5, 4, 3, 2, 1, 0


cnt = 7;
while (--cnt > 0){
    cout << cnt << " "
}               // 6, 5, 4, 3, 2, 1

一般情况下,如果只要求必须执行的次数,而与每次的 cnt 值无关,第一种清行执行了 cnt 次,正是我们期待的,而第二种情况,却少执行了一次。

当然还可进一步简化:

while (cnt--){
    ...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值