为什么要(;;);无限循环
Why is for(;;); an infinite loop?
在C和C 中,我已经无数次写了无限的循环,但是今天是我第一次真正考虑过 - 为什么这是一个无限的循环条件条款为空?人们希望您必须写一些for(;true;);
之类的东西才能获得有效的无限循环?
while();
不编译, while(;);
无论如何,我喜欢for(;;);
语法并经常使用它,但是将空条件块视为true还是在C或C 中是否有其他情况,其中空条件表达式被解释为true?
C标准明确描述了for
循环的这种行为:
C11标准草案§6.8.5.32
可以省略第1条和表达式3。省略的表达式2 被非零常数取代。
类似地,对于C :
C 14标准草案§6.5.3 2
可以省略条件的条件和表达式。 缺少的条件使隐含条款等效于 while(true)。
行为由语言(C )定义。对于for循环,条件部分是可选的:
语法
正式语法:
attr(optional) for ( init-statement condition(optional) ; iteration_expression(optional) ) statement
和(强调我的)
上面的语法产生的代码等效于:
{ init_statement while ( condition ) { statement iteration_expression ; } }
除了
3)空条件等效于
while(true)
对于循环时,条件零件是必要的,不能命令。
语法
attr(optional) while ( condition ) statement
相关文章:
- 为什么这段代码会导致无限循环?
- 为什么这种方法会进入无限循环?
- 试图找出为什么我的代码保持无限循环
- 为什么这个递归函数会创建一个无限循环?
- 为什么无限循环会延迟打印?
- 如何找出为什么我的程序一直有一个无限循环?
- 为什么我的代码在 c++ 中无限循环.我的代码需要反复提示用户
- 异常基础知识:为什么 while 循环会变成无限循环?
- 为什么这会导致无限循环?
- 为什么我有一个无限循环,我如何以不同的方式做到这一点
- 打电话给功能后,为什么我会陷入无限循环中
- 为什么输出会进入无限循环
- 为什么我会得到一个无限循环(因子)?
- 为什么我的埃拉托色尼代码筛子无限循环.我已经用几个数字进行了测试
- 为什么输入流无法识别 Ctrl D 并给出无限循环
- 为什么这段代码陷入无限循环?
- 为什么我总是得到一个无限循环
- 为什么要(;;);无限循环
- 为什么当用户输入除整数之外的任何内容时,我的程序会无限循环输出?C++
- 无限循环,我不知道为什么