关闭

while(1)和for(;;)两个死循环有什么区别

3487人阅读 评论(0) 收藏 举报
一般for(;;)性能更优
  1. for(;;)  
  2. {}
复制代码
这两个;; 空语句,编译器一般会优掉的,直接进入死循环
  1. while(1)  
  2. {}
复制代码

每循环一次都要判断常量1是不是等于零,在这里while比for多做了这点事。不过从汇编的角度来说,都是一样的代码。


另一种解释:

看VC生成的汇编码,for比while要快一些。for(;;)是直接跳转,while多了两条指令而已。
不过C++标准里并未规定编译器的实现方式,非VC平台以及以后新版的VC二者速度相比如何还未可知。而且说句实话,我蛮讨厌for(;;)代替while(true)的。不直观。我也不在乎这么丁点儿效率。至少我写的程序中没遇到需要优化到这种程度的代码。

1. 两种循环在构造死循环时的区别
用while构造死循环时,一般会使用while(TRUE)来构造死循环;而用for来构造死循环时,则使用for(;;)来构造死循环。这两个死循环的区别是:while循环里的条件被看成表达式,因此,当用while构造死循环时,里面的TRUE实际上被看成永远为真的表达式,这种情况容易产生混淆,有些工具软件如PC-Lint就会认为出错了,因此构造死循环时,最好使用for(;;)来进行。
2. 两种循环在普通循环时的区别
对一个数组进行循环时,一般来说,如果每轮循环都是在循环处理完后才讲循环变量增加的话,使用for循环比较方便;如果循环处理的过程中就要将循环变量增加时,则使用while循环比较方便;还有在使用for循环语句时,如果里面的循环条件很长,可以考虑用while循环进行替代,使代码的排版格式好看一些。

2
0
查看评论

while(1)和for(;;)两个死循环有什么区别

一般for(;;)性能更优 for(;;)   {} 复制代码 这两个;; 空语句,编译器一般会优掉的,直接进入死循环 while(1)   {} 复制代码 每循环一次都要判断常量1是不是等于零,...
  • ljb825802164
  • ljb825802164
  • 2016-01-09 21:21
  • 3487

while(1);是死循环的意思。只要括号里为非零,也就是真值,它就一直循环这条句子。

while(1);是死循环的意思。只要括号里为非零,也就是真值,它就一直循环这条句子。 这个句子一般用在三个方面: 1.正常程序里,用来等待中断的产生; 2.在总程序的后面加上这条,可以减少单片机程序跑飞,出现程序可能的混乱; 3.调试的时候,手工让程序停在一个地方,不往下执行,以便于观...
  • qq_17242957
  • qq_17242957
  • 2014-10-24 10:39
  • 909

【C语言天天练(一)】while(1)死循环与for(;;)死循环的区别

单片机的编程中经常用到while(1)死循环来进行轮寻操作,但分析Linux内核源代码时却经常见到for(;;)作为死循环的条件。 两者区别: 区别一 for(;;)死循环里的两个;;代表两个空语句,编译器一般会优化掉它们,直接进入循环体。 while(1)死循环里的1被看成表达式,每循环一次都要判...
  • To_Be_IT_1
  • To_Be_IT_1
  • 2014-06-12 22:37
  • 2810

While_continue 语句里容易出现的一个死循环及解决办法

package cn.itcast.zuoye_GuanQia1_day03; /* * 需求:使用while循环, 输出10次HelloWorld.请在跳过第4次输出. * */public class While_Continue {public static void main...
  • nrsc272420199
  • nrsc272420199
  • 2017-06-21 23:06
  • 671

关于使用while(!filePCloud.eof())判断文件结尾进行数据输入装换时注意事项

TXT文件读取操作注意事项 TXT文件读取 文件结尾判断 eof
  • u010177286
  • u010177286
  • 2014-09-10 22:23
  • 787

while(true){ i++;} 如何不会陷入死循环

一日晚,突发奇想,想到一道可能在面试中出现的题目(目前还没见过,自己想到的): while(true){ i++;}请问如何不会陷入死循环,要求不能在大括号之间添加任何语句…… 先不要看我后面的内容,你能想到几个答案?   当时把这个题目放到了自己qq签名上,并且借用腾讯
  • q283595518
  • q283595518
  • 2011-10-08 01:05
  • 7164

for(;;)和while(1)两种死循环的区别

有些编译器在写程序时会自动生成死循环代码,大多是使用for形式的,我们自己写程序,经常用的while(1),所以有些不解,查询网络后得出以下结论 即 for(;;)和while(1)两种死循环的区别: 1、 for(;;)死循环里的两个;;代表两个空语句,编译器一般会优化掉它们,直接进入循环体...
  • ysudykx
  • ysudykx
  • 2017-02-16 22:46
  • 950

while(true)循环与CPU占用率问题

一、为什么死循环占用CPU高 一个进程如果是死循环,那么占有的CPU会很高,可以操作系统时间片运行的,到了一定时间不是会自动切换到别的进程吗?既然即便是死循环,到时间还是会切换到别的进程,为什么占用CPU会高呢?   到时候的确会切换到别的进程。 可以这样理解:当切换到别的进程时,...
  • zhuyijian135757
  • zhuyijian135757
  • 2014-12-30 17:54
  • 3838

巧用while(true){ }死循环的一个小例子

package cn.itcast.zuoye_GuanQia2_day03;/* * 请按如下要求编写程序,打印菜单: 1.从键盘上录入一个1到5的数字; 2.当数字为1时打印菜单”新建”; 当数字为2时打印菜单”打开文件”; ...
  • nrsc272420199
  • nrsc272420199
  • 2017-06-21 22:56
  • 891

Perl while 死循环

use warnings; use Net::Ping; while (1 == 1 ){ if ($#ARGV <0){ print "请输入一个参数\n"; exit(-1); } $host = $ARGV[0...
  • zhaoyangjian724
  • zhaoyangjian724
  • 2014-12-31 14:23
  • 870
    个人资料
    • 访问:67714次
    • 积分:926
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:21篇
    • 译文:1篇
    • 评论:7条
    文章分类
    最新评论