- (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;
}
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--){
...
}