for(;true;);
这样的东西来获得有效的无限循环吗?
while();
无法编译,也不会while(;);
无论如何,我喜欢for(;;);
语法并经常使用它,但是将空条件块视为true是特殊情况还是在C或C ++中有其他情况将空条件表达式解释为真?
答案 0 :(得分:12)
C标准明确描述了for
循环的这种行为:
可以省略子句-1和表达式-3。省略的表达式-2 被非零常数替换。
同样,对于C ++:
可以省略条件和表达式中的任何一个或两者。 缺少条件会使隐含的而子句等效于 的而(真)强>
答案 1 :(得分:4)
行为由语言(C ++)定义。对于for loop,条件部分是可选的:
语法
形式语法:
attr(optional) for ( init-statement condition(optional) ; iteration_expression(optional) ) statement
和(强调我的)
上述语法产生的代码相当于:
{ init_statement while ( condition ) { statement iteration_expression ; } }
除了
3)空状态相当于
while(true)
对于while loop,条件部分是必要的,不能省略。
语法
attr(optional) while ( condition ) statement