CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

您能使用多少种方法实现一个无限循环??

楼主JerKii(JERKII SHANG)2006-03-20 14:09:12 在 C/C++ / C++ 语言 提问

将你所想到的方法都列出来....  
   
  :) 问题点数:20、回复次数:60Top

1 楼iamcaicainiao(老菜,长征)回复于 2006-03-20 14:11:13 得分 0

无穷。  
  while(1)  
  while(2)  
  while(3)  
  ……Top

2 楼JerKii(JERKII SHANG)回复于 2006-03-20 14:14:38 得分 0

 
  __asm  
  {  
  L0:   push   offset   L0  
          ret  
  }Top

3 楼JerKii(JERKII SHANG)回复于 2006-03-20 14:15:10 得分 0

TO   iamcaicainiao(菜菜鸟)   ,你所写的方法一点也不精妙:)Top

4 楼hslinux(幻世龙)回复于 2006-03-20 14:16:59 得分 0

for   (;;);  
  while(1);  
  do{}while(1);  
  goto;  
  Top

5 楼JerKii(JERKII SHANG)回复于 2006-03-20 14:18:47 得分 0

使用JMP的硬编码,类似Thunk:  
   
          unsigned   char   code[]   =   {0xEB,   0xFE};  
          void   (*fn)   (void)   =   (void   (*)   (void))   &code[0];  
          fn   ();  
  Top

6 楼JerKii(JERKII SHANG)回复于 2006-03-20 14:21:36 得分 0

不让都写些让人们一眼就可以看出是无限循环的代码阿   ...Top

7 楼yelling(Ray(←☆→射手))回复于 2006-03-20 14:25:03 得分 0

问题问的真是。。。。  
  Top

8 楼adintr(www.adintr.com)(风流总被雨打风吹去)回复于 2006-03-20 14:28:50 得分 0

void   f()  
  {  
  f();  
  }Top

9 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-20 14:34:09 得分 0

搞那么复杂干啥?  
  _asm    
  {  
  next:  
  call   next  
  }  
   
  Top

10 楼popy007(Twinsen)回复于 2006-03-20 14:36:02 得分 0

void   f()   {  
      if(++i%2)  
          f();  
      if(!(j++%2))  
          f();  
  }Top

11 楼popy007(Twinsen)回复于 2006-03-20 14:36:50 得分 0

adintr(www.adintr.com)  
   
  这样会导致堆栈溢出~~Top

12 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2006-03-20 15:06:10 得分 0

偶只用一招  
  while(true)  
  {;}Top

13 楼healer_kx(甘草(楼主揭贴吧,我们这些上班灌水的也不容易))回复于 2006-03-20 15:08:11 得分 0

while(true);  
  这么写多帅啊。。。  
  Top

14 楼JerKii(JERKII SHANG)回复于 2006-03-20 15:12:14 得分 0

很复杂吗?闲着没事干呗!:)Top

15 楼luoheth(好好学习)回复于 2006-03-20 15:15:01 得分 0

嵌套调用函数Top

16 楼lonelyforest(一生所爱)回复于 2006-03-20 15:19:26 得分 0

for   (;true;);  
  不一样很帅么??Top

17 楼JerKii(JERKII SHANG)回复于 2006-03-20 15:59:40 得分 0

这也是一个无限循环:  
  for   (unsigned   char   c   =   0;   c   <=   0xFF;   ++c);  
   
  :)Top

18 楼ugg(逸学堂(exuetang.net))回复于 2006-03-20 16:10:37 得分 0

main()  
  {  
  main();  
  }Top

19 楼JerKii(JERKII SHANG)回复于 2006-03-20 16:21:19 得分 0

无限递归终究是会栈溢出的!Top

20 楼JerKii(JERKII SHANG)回复于 2006-03-20 16:23:04 得分 0

healer_kx(甘草)   的方法也是一种递归!  
  _asm    
  {  
  next:  
  call   next  
  }Top

21 楼JerKii(JERKII SHANG)回复于 2006-03-20 16:24:14 得分 0

汇编中还常用   JMP   $   来实现无限循环。Top

22 楼cattlenzq(吃狼的豆腐(不要给分了,散起来真麻烦!))回复于 2006-03-20 16:27:00 得分 0

_asm  
  {  
  loop:  
  goto   loop  
  }Top

23 楼iamcaicainiao(老菜,长征)回复于 2006-03-20 17:22:11 得分 0

呵呵。偶的最丑了。楼逐见笑。Top

24 楼fabio210(狂笑江湖)回复于 2006-03-20 17:54:18 得分 0

还是while(1)好用。整那么多干啥。Top

25 楼zylthinking()回复于 2006-03-20 20:29:56 得分 0

2楼正解Top

26 楼antter(JiangMiao)回复于 2006-03-20 20:40:32 得分 5

restart.bat  
  shutdown   /r  
   
  把restart.bat加入startupTop

27 楼dxjwolf(啸月孤狼)回复于 2006-03-20 20:48:51 得分 0

a:   goto   a;Top

28 楼nasi00(莫傲·逍遥)回复于 2006-03-20 21:08:28 得分 5

根据tpop的说法,无限循环在工程上只有  
   
  for(;;)   {}   和   while(1)   {}   两种写法  
   
  别的都没有太大意义...Top

29 楼JerKii(JERKII SHANG)回复于 2006-03-21 08:20:10 得分 0

当然,我们这里讨论的不是在工程上的应用。  
  而是想用我们所学到的各种知识来实现一个无限循环而已,纯属“学术讨论”:)  
   
  Everybody,   go   on   please   ...Top

30 楼tfrist(tfrist)回复于 2006-03-21 09:13:10 得分 0

_asm   jmp   $Top

31 楼huwei001982(michaelhuwei.cnblogs.com)回复于 2006-03-21 09:23:39 得分 0

循环.无限Top

32 楼Himulaxinta2(kenxin)回复于 2006-03-21 09:54:53 得分 0

无聊啊!  
  用的无非是:  
  for,while,递归,goto,   或者汇编中的类似方法罢了。  
  本来死循环就很无聊了,还要搞有多少方法,无聊!Top

33 楼cdo(Everything has a favourable turn)回复于 2006-03-21 09:55:24 得分 5

就用while(1);Top

34 楼icbm(雪狼)回复于 2006-03-21 10:11:28 得分 0

所有的指令最后都会编译成机器码,只需讨论一下最后生成的机器码有什么差别就可以了。  
   
  一般情况下,就是这么两种。其它的变种和它们生成的机器码是一样的。  
  for(;;){...}  
   
  do{...}while(1)  
  while(1){...}Top

35 楼jsjjms(专心研究嵌入式)回复于 2006-03-21 10:14:24 得分 0

用timer也可以,只要一直不关闭就是Top

36 楼303afei()回复于 2006-03-21 10:37:47 得分 5

_asm  
  {  
  push     当前指令地址  
  ret  
  }  
  Top

37 楼JerKii(JERKII SHANG)回复于 2006-03-21 10:38:28 得分 0

另外,大家有没有在自己的开发过程中由于自己的粗心导致的无限循环呢?  
  比如,我就曾经遭遇过,下面的错误(在前面我也经贴过了)。。。  
  for   (unsigned   char   c   =   0;   c   <=   0xFF;   ++c)  
  {  
        ...  
  }  
   
  大家务必不要重蹈覆辙哦!:)Top

38 楼JerKii(JERKII SHANG)回复于 2006-03-21 10:39:47 得分 0

303afei()   所说的这种情况我已经在2楼贴过了!  
  这也是我在编程时不小心犯的错误!Top

39 楼ruodeer(看我的个性签名都给我分)回复于 2006-03-21 10:48:47 得分 0

for(;;){...}  
   
  do{...}while(1)  
  while(1){...}  
   
  c++学习的时候有这三种循环机制Top

40 楼hai1039(天下)回复于 2006-03-21 10:57:34 得分 0

汇编里方法多一些.  
   
  1.   用各种跳转命令向前跳,如JA,   JNE,   JG等等,有近40种指令。  
  2.   修改cs,ip的值指向前方  
  3.   使用call,   然后修改堆栈返回地址  
  4.   将有效寻址空间内全部填上NOP  
  5.   设软中断自己,修改堆栈。  
  6.   loop指令,并人工修改cx.Top

41 楼JerKii(JERKII SHANG)回复于 2006-03-21 12:02:45 得分 0

hai1039(天下)   ,要是能写出代码出来不是更好?Top

42 楼beginnow()回复于 2006-03-21 12:11:34 得分 0

线程应该是一例Top

43 楼primercpp(初学者)回复于 2006-03-21 12:43:34 得分 0

pause();Top

44 楼qiuyu0619(秋雨)回复于 2006-03-21 12:53:06 得分 0

for(;;)  
    ……  
   
  while(1)  
  while(2)  
  while(3)  
  ……  
   
  太多了。。。Top

45 楼gkexy(孤客行云)回复于 2006-03-21 13:23:18 得分 0

push(a);  
  push(pop(a));Top

46 楼playdreamer(梦想|死亡|梦想|以未包二奶为耻)回复于 2006-03-21 14:09:35 得分 0

楼主换个说法:大家把以前不小心造成死循环,结果费时费力DEBUG的经历拿出来聊聊,这样能引起点共鸣。  
  说啥:多少种方法实现死循环,会让人感觉是在讨论‘怎么样更精妙的为蛇画4只脚’Top

47 楼iamcaicainiao(老菜,长征)回复于 2006-03-21 16:00:48 得分 0

还死循环着那?  
  最新通知,今天晚上断电。请保存好你的xx。Top

48 楼sparrow009(奇疯)回复于 2006-03-21 16:11:31 得分 0

哈哈、  
  Lz是不是编程编得郁闷了  
  :)Top

49 楼wu19821214(狗)回复于 2006-03-21 17:05:55 得分 0

好象都不行呀,计算机位数有限,怎么也有出问题的一天.Top

50 楼wgjmail(笑面佛)回复于 2006-03-21 17:18:31 得分 0

无聊Top

51 楼tzleo(绿豆狂潮)回复于 2006-03-21 17:21:58 得分 0

前面的都错拉,楼主要的是关机也不能中断的循环Top

52 楼tzleo(绿豆狂潮)回复于 2006-03-21 17:24:52 得分 0

你们的思路太狭窄,难道只有计算机才能循环吗Top

53 楼winyin(无名飞非)回复于 2006-03-21 17:54:34 得分 0

起床,吃饭,上班,吃饭,上班,吃饭,睡觉,重复,,  
   
  日复一日,年复一年,,重复到几十年后,挂掉...Top

54 楼winyin(无名飞非)回复于 2006-03-21 17:55:16 得分 0

接上面,  
  重复到"死",,  
  这才是真正的"死循环"...Top

55 楼maozigogo(毛毛)回复于 2006-03-21 19:56:39 得分 0

接上面  
  重复撞到屎  
  这才是真正的屎寻欢...Top

56 楼maozigogo(毛毛)回复于 2006-03-21 19:59:45 得分 0

技铝撞到屎  
   
  是乃   屎寻欢   也Top

57 楼realsmy(久城)回复于 2006-03-21 20:24:38 得分 0

呵呵~好多人啊~  
   
  我看不出有什么区别?~~~  
   
  while(1)  
  {  
  ...  
  };  
   
  偶还是感觉这个比较实在...Top

58 楼turing(山坡羊)回复于 2006-03-21 20:50:46 得分 0

我觉得应该写两个程序  
  A程序把B程序起来,然后自己死掉  
  让后B又将A起来,自己死掉  
   
  或者两个电脑互掐,呵呵Top

59 楼manplus(魅力加加)回复于 2006-03-21 21:35:15 得分 0

好无聊的争论Top

60 楼dream2013(每个人都有魔鬼的一面( http://blog.sina.com.cn/u/1422260677 ))回复于 2006-03-22 12:41:07 得分 0

markTop

相关问题

  • 无限循环
  • 无限循环
  • 无限循环中~
  • RichEdit中怎样用最简单的方法实现无限Undo?
  • 请问如何实现按一下回车,执行一段无限循环,再按一下停止循环,因为在执行无限循环的时候,好象不会响应再次按下的回车键。
  • 如何用java实现无限时间但间隔是5秒的循环程序,并可用q键退出循环和程序
  • 构造函数中的无限循环????
  • 在一个页面内有一个无限循环,我如何实现在这种情况下,打印出字符"ok"??
  • 求教不用goto语句实现一次跳出多层循环的好方法!
  • 使程序停顿,用循环实现cpu占用太多!有没有更好的方法!

关键词

  • 方法
  • true

得分解答快速导航

  • 帖主:JerKii
  • antter
  • nasi00
  • cdo
  • 303afei

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo