while (true) 和 for ( ; ; )
这两种方法效果完全一样,但那一种更好呢?
我们来看看它们编译后的汇编代码,
下面是在vs2013中编译的结果:
while (true) 编译前
while (true);
编译后
mov eax,1
test eax,eax
je wmain+29h
jmp wmain+1Eh
for ( ; ; )编译前
for (;;);
编译后
jmp wmain+29h
很显然,for ( ; ; )指令少,不占用寄存器,而且没有判断、跳转,比while (true)好。
更多解释请看: