for(;;)和while(true)的区别

    xiaoxiao2021-04-12  33

    再看JDK源码的时候发现,“死循环”有两种写法:for(;;)和while(true),

    我就疑问,两者有啥区别,有啥源码中多数是for( ; ; )这种形式的,

    编译前              编译后      while (1);         mov eax,1                                                 test eax,eax                                                 je foo+23h                                                jmp foo+18h         编译前              编译后      for (;;);          jmp foo+23h   

    一目了然,for (;;)指令少,不占用寄存器,而且没有判断跳转,比while (1)好。

    也就是说两者在在宏观上完全一样的逻辑,但是底层完全不一样,for相对于来说更加简洁明了。

    转载请注明原文地址: https://ju.6miu.com/read-667072.html

    最新回复(0)