for(;;)和while(1)都是无限循环,但是两者编译后的汇编指令不一样。
编译后的代码:
编译前 编译后
while (1); mov eax,1
test eax,eax
je foo+23h
jmp foo+18h
编译前 编译后
for (;;); jmp foo+23h
可以看出,for(;;)指令少,不占用寄存器,没有判断跳转,比while (1)效率高。