【轉(zhuǎn)自】for(;;)和while(true)的區(qū)別 - ashqal的專欄 - CSDN博客
一直知道for(;;)和while(true)都是無(wú)限循環(huán),今天搜了下原理。
while VS? for
在編程中,我們常常需要用到無(wú)限循環(huán),常用的兩種方法是while (1) 和 for (;;)。這兩種方法效果完全一樣,但那一種更好呢?讓我們看看它們編譯后的代碼:
編譯前? ? ? ? ? ? ? ? 編譯后
while (1);? ? ? ? ? ? mov eax,1
? ? ? ? ? ? ? ? ? ? ? ? ? test eax,eax
? ? ? ? ? ? ? ? ? ? ? ? ? je foo+23h
? ? ? ? ? ? ? ? ? ? ? ? ? jmp foo+18h
編譯前? ? ? ? ? ? ? ? ? 編譯后
for (;;);? ? ? ? ? jmp foo+23h
一目了然,for (;;)指令少,不占用寄存器,而且沒有判斷跳轉(zhuǎn),比while (1)好。