C++没有条件的for循环

3
我发现这段代码:for ( ; ; ) {}。
快速的搜索并没有找到它的含义。看起来像是另一个线程在处理终止。这是否相当于'while (TRUE) {}'?

1
while(TRUE){} 不是有效的 C++ 语法。while(true){}for(;;){} 都是未定义行为。 - Kerrek SB
10
这两个行为怎么可能是未定义的行为? - Kevin
1
@Kevin http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1528.htm - BartoszKP
@Kevin:1.10/24:“该实现可以假设每个线程都终止了。” - Kerrek SB
@KerrekSB: 这是指6.8.5p5,其中写道:“一个迭代语句,其控制表达式不是常量表达式,没有执行输入/输出操作,不访问易失性对象,并在其主体、控制表达式或(在for语句的情况下)expression-3中不执行同步或原子操作的语句,可假定实现终止。”这并不适用于for (;;) {}。(一个脚注说for (;;)被视为具有恒定的控制表达式。) - Keith Thompson
显示剩余8条评论
2个回答

10

这是一个无限循环。在for循环的三个部分(初始化,条件和增量)中的任何一个都可以缺失。特别地,如果for循环中的条件缺失,则被视为真。因此,它等同于while(1) { ... }


2

是的,它们在功能上是等效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接