while(true)和for(;;)之间有什么区别?

时间:2014-05-25 18:04:38

标签: c loops for-loop while-loop

我知道这两个都创造了有意无限的循环,而且我有一个朋友让我对使用for(;;)而不是while(true)感到困惑。除了while(true)更常被接受为"正确"之外,两者之间是否存在任何差异?语法,即内存使用或循环速度?

2 个答案:

答案 0 :(得分:3)

它们完全相同: 通过GCC检查生成的汇编文件(使用-S),可以看到编译器为两者生成相同的指令。

for循环:

.L2:
    jmp .L2

while循环:

.L4:
    jmp .L4

答案 1 :(得分:2)

这两个陈述之间没有功能差异。对于新用户来说,while(true)可能会更清楚一些,而for(;;)则更加神秘。但是,编译器将它们读作基本相同。

它们的作用是创造一个无限循环。