我知道这两个都创造了有意无限的循环,而且我有一个朋友让我对使用for(;;)
而不是while(true)
感到困惑。除了while(true)
更常被接受为"正确"之外,两者之间是否存在任何差异?语法,即内存使用或循环速度?
答案 0 :(得分:3)
它们完全相同: 通过GCC检查生成的汇编文件(使用-S),可以看到编译器为两者生成相同的指令。
for
循环:
.L2:
jmp .L2
while
循环:
.L4:
jmp .L4
答案 1 :(得分:2)
这两个陈述之间没有功能差异。对于新用户来说,while(true)
可能会更清楚一些,而for(;;)
则更加神秘。但是,编译器将它们读作基本相同。
它们的作用是创造一个无限循环。