[英]What does for(;1;) mean in the C language?
for(;1;)
在 C 中是什么意思?
在无限循环的意义上,它是否与for(;;)
相同?
我知道输入1
的位置是变量的条件部分,但在这个for
循环中,我不相信它确实是一个无限循环。
根据 C 标准(6.8.5.3 for 语句)
2 子句 1 和表达式 3 都可以省略。 省略的表达式 2 由非零常量替换。
所以实际上你自己而不是编译器用非零常量 1 替换了省略的表达式 2。
所以这两个陈述
for(;1;) { /*...*/ }
和
for(;;) { /*...*/ }
是完全等价的。
在我看来,写得更好
while ( 1 ) { /*...*/ }
而不是上面显示的语句。
被说服。 For 循环一直工作,直到表达式的条件部分变为假。 而在C
1 的意思是“ true
”,很明显,它永远不会变成假。
基本上,你的两个表达式 for(;1;) 和 for(;;) 都会给你无限循环。
MSDN说
for 语句的所有表达式都是可选的; 例如,以下语句用于编写无限循环:
for (; ; )
{
// ...
}
所以循环条件中的任何条件都不会给你一个无限循环。
关于你的另一个问题 for(;1;): 你不相信它会给你无限循环。
它必须无限循环,因为条件语句的结果不等于 0。
以下是一些示例:
for(;1;) //Infinite loop
for(;0;) //Loop will not execute at all
for(;-1;) //Infinite loop.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.