因为C风格的for循环有太多不确定的地方,这些东西都非常的不直观:
典型的C风格的for循环像这样:
for( initialize; condition; increment )
statement( block);
那么存在这么一大堆问题:
- initialize声明的变量可见性范围是?生命周期是?
- condition在第一次循环结束后还是开始前判断?
- increment在第一次循环前执行还是第一次循环后执行?
- 循环结束后,是先执行increment还是先判断condition?
- initialize是否允许同时初始化多个变量?
- initialize和increment都可以省略,那么condition是否可以省略?省略后是不是等价于true?
这些问题的答案当然都是明确的,但都是完全不直观的。
人生苦短,没事记这些玩意儿干啥?
而反观while循环:
while( condition )
statement( block);
既没有initialize,也没有increment,所以这些问题都不存在:
- initialize声明的变量可见性范围是?生命周期是?
没有initialize,所以不存在这个问题 - condition在第一次循环结束后还是开始前判断?
condition放在statement前面,显然是在第一次循环开始前判断&#x