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

简介: 总结 for(;;) 比 while(true) 好为啥:如下(底层完全不同)“死循环”有两种写法:for(;;)和while(true),两者有啥区别,为啥源码中多数是for( ; ; )这种形式的, 编译前 ...

总结 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相对于来说更加简洁明了。

目录
相关文章
|
Python
a is b 为 True,a == b 一定为 True 吗?
a is b 为 True,a == b 一定为 True 吗?
114 0
|
应用服务中间件
reloadable=“false“ 的作用
reloadable=“false“ 的作用
131 0
[]==![](true)、{}==!{}(false)
[]==![](true)、{}==!{}(false)
101 0
|
JavaScript 数据安全/隐私保护 前端开发
js中return,return true,return false三者的用法及区别
return其实就是return undefined; 1.语法及返回方式 ①返回控制与函数结果         语法为:return 表达式;         语句结果函数的执行,返回调用函数,而且把表达式的值作为函数结果返回出去 ②返回控制无函数结果         语法为:return;         在大多数情况下,为事件处理函数如果让其返回false,可以防止默认的事件行为.
1627 0
|
Java 程序员
for(;;)和while(true)的区别
for(;;)和while(true)的区别
131 0
for(;;)和while(true)的区别
|
Java 编译器 C语言
for(;;)和while(true)的区别
for(;;)和while(true)的区别
140 0
for(;;)和while(true)的区别
|
编译器
for( ; ; )和while(true)的区别
喜欢看源码的同学可能都会发现,很多组件的作者在做死循环时,都喜欢用for( ; ; ),while(true)或者while(1)也能实现死循环,为啥大佬们都用for( ; ; )呢
4383 0
for( ; ; )和while(true)的区别