是什么
for(;i;)
和
for(;;)
在c编程中意味着什么?
for(;i;)
printf("hjj");
上述程序会发生什么?
int i=1;
for(;;)
编译器是否会进入循环?
答案 0 :(得分:4)
for(;;)
是一个无限循环。当for(;i;)
的值变为i
时,0
将终止。
在你的情况下,
int i=1;
for(;;)
for将是一个无限循环,直到内部块突破循环。
答案 1 :(得分:1)
让我们分解for
语句(参见C standard 6.8.5.3):
for ( clause-1 ; expression-2 ; expression-3 ) statement
in
for(;;)
你省略了初始化语句( clause-1 )和循环体表达式( expression-3 ),我假设你很清楚这些意思只是没有操作。
控制部分是中间的,表达式-2 。在每次迭代开始时,此表达式的计算结果为true或false。如果它的计算结果为true,则执行下一次迭代。现在我回到the standard:
“省略的表达式-2被非零常量替换。”
您可能知道,“非零常量”在布尔上下文中的计算结果为true。因此:
for (;;)
等同于:
while (1)
所以循环将继续迭代,一个无限循环,除非执行break
或外部中断(如<CTRL>C
)介入。
所以,更进一步:
for(;i;)
取决于i
的值。如果i
非零,则您再次有一个无限循环,但如果i
为零(false),则循环将不会迭代。