多年来我在C和C++中多次写过这样的无限循环,但今天是我第一次真正想到它 - 为什么条件子句为空时它是一个无限循环?人们会期望你必须写一些类似于for(;true;);获得有效无限循环的东西?
while(); 不编译也不编译 while(;);
无论如何,我喜欢for(;;);语法并经常使用它,但是将空条件块视为true是特殊情况还是在C或C++中有其他情况将空条件表达式解释为true?
ex *_*ilo 12
C标准明确描述了for循环的这种行为:
可以省略子句-1和表达式3.省略的表达式-2由非零常量替换.
同样,对于C++:
可以省略条件和表达式中的任何一个或两者.缺失条件使隐含的while子句等同于 while(true).