c语言中for(;;)如何理解

如题所述

基本等价于while(1),即无限循环。如果需要终止循环,需要在循环体内break或return
但为什么有人喜欢用 for(;;) 而不用 while(1), 这是因为,如果编译器不做特殊优化,二者产生的代码会有区别。while(1) 多了一个判断,性能略差一些。而for(;;)循环,只有一个 jmp 指令就继续循环运行。

可以对比二者的汇编代码:
for(;;)
{
00412B4F ...
...
}
00412B70 jmp main+2Fh (412B4Fh)

while(1)
00412B72 mov eax,1
00412B77 test eax,eax
00412B79 je main+7Eh (412B9Eh) // eax 值不为0,就跳出循环
{
...
...
}
00412B9C jmp main+52h (412B72h)
00412B9E ...

上面: 00412B72到 00412B79 就是多出来的三条指令。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-04-22
这是个死循环,所以要在for循环体内增加退出循环的语句
比如
for(;;)
{
……
if(条件为真)
break;
……
}本回答被网友采纳
第2个回答  2019-11-23
这个是死循环,最好写成while(1){}
你把for(;;)换成while(1)就可以了,意思就是不停执行for后面{}里面的代码,代码的具体意思吗,不太了解。除非你提供函数原代码
第3个回答  2011-03-05
//这个for是用来给数组赋值
for(i=0;i=size;++i)

//这个是用来输出数组元素的
for语句()后面没有分号
第4个回答  2011-02-25
对于for循环很灵活,多找些资料研究。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网