美文网首页
for(;;)和while(true)的区别

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

作者: faunjoe | 来源:发表于2018-09-14 14:04 被阅读0次

    总结 for(;;) 比 while(true) 好
    为啥:如下(底层完全不同)

    “死循环”有两种写法: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相对于来说更加简洁明了。

    相关文章

      网友评论

          本文标题:for(;;)和while(true)的区别

          本文链接:https://www.haomeiwen.com/subject/mzdogftx.html