美文网首页
[C++] 循环for(;;)和while(true)的区别

[C++] 循环for(;;)和while(true)的区别

作者: winng伍寅 | 来源:发表于2019-01-30 13:31 被阅读0次

转自:
https://blog.csdn.net/qq_39345059/article/details/78266526
https://blog.csdn.net/qq_40732350/article/details/82529465


使用for循环和while循环都可以去实现,那么到底两者之间有什么区别?

1.从内存角度考虑:

  • 局部变量在栈内存中存在,当for循环语句结束,那么变量会及时被gc(垃圾回收器)及时的释放掉,不浪费空间。
  • 如果使用循环之后还想去访问循环语句中控制那个变量,使用while循环。
  1. 从应用场景角度考虑:
  • 如果一个需求明确循环的次数,那么使用for循环(开发中使用for循环的几率大于while循环)。
  • 如果一个需求,不知道循环了多少次,使用while循环。

在看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相对于来说更加简洁明了。
但是在ARM上,这两个无差别 arm-linux-gcc -S -o d.S 4.c,都是:

L2:
    b  .L2

相关文章

  • [C++] 循环for(;;)和while(true)的区别

    转自:https://blog.csdn.net/qq_39345059/article/details/7826...

  • js循环

    循环语句 while(条件){ 条件为true执行; } 列:while 循环 var a=1; while(a<...

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

    总结 for(;;) 比 while(true) 好 为啥:如下(底层完全不同) “死循环”有两种写法:for(...

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

    总结 for(;;) 比 while(true) 好为啥:如下(底层完全不同) “死循环”有两种写法:for(;;...

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

    JDK源码中,“死循环”有两种写法:for(;;)和while(true), 源码中多数是for( ; ; )这种...

  • Java 基础 Day05

    循环结构 循环结构的三种方式: while循环 while (循环条件 true/false) { 循...

  • javascript

    流程控制 switch 循环 for 循环和 while 循环的区别:for 用于知道循环次数的循环,while ...

  • Kotlin之迭代事物

    while循环 Kotlin有while循环和do-while循环,它们的语法和Java中的循环没什么区别: 迭代...

  • Day06

    Java中对while(true)的理解 while(true)作为无限循环,经常在不知道循环次数的时候使用,并且...

  • C++循环

    C++中的循环主要包含while循环、for循环、do…while循环以及嵌套循环,while循环就是当给定条件为...

网友评论

      本文标题:[C++] 循环for(;;)和while(true)的区别

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