周伟明的专栏

多核的免费午餐已回来

用户操作
[即时聊天] [发私信] [加为好友]
周伟明
周伟明的公告
一书已上市, 欢迎大家提出意见!
最近评论
bingbing200x:对数据结构不是很精通,有个疑问想请教一相周老师:

在Queue_InsertTail 函数中

if ( pQueue->uTail == pQueue->uMaxCount - 1 )

这一句看不太懂,数组中最后一个元素一直没有使用?
还是有其它方面的原因?
bingbing200x:you are all right
lande1985:唉 怎么说呢

用哲学的思想在现在的各方面好像都是可以的 啊

思想么

但是 传统的就要去其糟粕 取其精华拉!!

呵呵

世界的是中国的

但是中国的不一定是世界的!!!

xblue3:老子其实是精英主义,并非推崇愚民的.

知之无知,
为而无为,
用则无用,
物物而不物于物.

要先"知"而后无知....
从混沌到稳定有序的状态(熵理论),从而不治而治....
不知何来混沌?
像石头一样,无知无觉的,再修养修炼,也不会得道明明德的.

laiqinyi@……
xblue3:"道家追求长生与稳定可靠性"---

胡扯,长生不老是道教的最求,道家和道教是有区别的.


"记得好像是南怀瑾曾经总结过中国社会的一个基本规律"---
外儒内法.法家思想统治.

中国是儒道不分家的,这个是南师的观点.

鄙人陋知,纠正几点,中国的哲学不错,呵呵!希望大家发扬光大...
文章分类
    收藏
      相册
      最近文章
      1、多核新观念-象使用内存一样使用CPU?
      2、多核编程中的任务随机竞争模式的概率分析
      3、OpenMP创建线程中的锁及原子操作性能比较
      4、多核编程中的任务分组竞争模式
      5、称球问题的测试解法
      90%程序员写不出无BUG的二分查找程序?
      C/C++代码检视实例
      多核编程中的负载平衡难题
      多核编程中的锁竞争难题
      微软过桥问题与测试人员素养
      接口关系稳定原理探索
      接口设计定理
      模块分解原理与三权分立
      模块分解原理的探索
      测试驱动需求分析
      筑一座坝治好中国的沙漠
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 关于goto语句能不能从复杂的嵌套循环判断中跳出去的问题讨论收藏

      新一篇: 《多任务下的数据结构与算法》一书的勘误 | 旧一篇: 使用C++模板和不使用C++模板两种情况中的执行代码大小近似估计

       
      关于goto语句的使用问题,要从技术上来讨论清楚能不能使用,在那些情况下能使用是比较困难的问题。
      我在写关于goto语句的使用这段文字时,思考再三,觉得如果从一个复杂的执行状态中goto到另外一个位置时,初学者是很难把握得住的。一个多重嵌套的循环判断中,程序执行路径数目非常大,使用goto语句跳出去后,初学者很难分析出那些路径会不会存在问题。
      从另外一个角度考虑,如果允许goto语句在多重嵌套的循环判断中跳出,等于鼓励使用goto语句,对有经验的人来说不成问题,但对初学者来说就容易出现滥用的问题。不使用goto语句并没有关系,但一旦goto语句被大规模使用,造成的后果就大了。前几年我发现我的一个下属代码中出现很多goto语句,我说“goto语句不是不建议使用的吗?你的代码中为什么这么多goto语句呢?”他告诉我在其他书中看到有说可以用goto语句。
       
      所以权衡再三,为了避免goto语句被滥用,避免把初学者引入歧途,我还是把goto语句不能从一个复杂的状态中跳到另一个位置那段话写入了书中。
       
      以上我对goto语句的一些看法,不当之处请大家指正。
       
       
       

      发表于 @ 2006年07月10日 17:17:00|评论(loading...)|编辑|收藏

      新一篇: 《多任务下的数据结构与算法》一书的勘误 | 旧一篇: 使用C++模板和不使用C++模板两种情况中的执行代码大小近似估计

      评论

      #恋花蝶 发表于2006-07-11 10:39:00  IP: 218.107.55.*
      你好,我在google上搜索了一下,找到一篇论述goto语句的文章,作者是:David Tribble 。这篇《Go To Statement Considered Harmful: A Retrospective》的论述看起来非常客观而且相当有见解,我认为可以作为我们对goto语句的使用的一个原则。

      关于goto应该用在哪方面,这篇文章的Part III Is Goto Still Necessary? 讲述了需要使用goto的两个地方一个是跳出多重循环,一个是异常处理。我认为我论述的不会比他更有力度,所以借花献佛,大家一起看看吧。

      不过,我同意你关于初学者会用goto把代码写成一堆狗屎的说法,但祖宗大禺治水就告诉我们堵不如疏,我们与其把goto说成是洪水猛兽不让他们接触,不如陈述利害关系,让他们趋利避害。不然的话,他们也会说“为什么老虎不吃人,模样还挺可爱。”。
      #恋花蝶 发表于2006-07-11 10:42:00  IP: 218.107.55.*
      晕,忘了贴上文章的网址了。
      http://david.tribble.com/text/goto.html
      里面也引用了算法大师Dijkstra关于去除goto语句的那封著名的信。
      #drzhouweiming 发表于2006-07-11 14:45:00  IP: 220.249.249.*
      你说的那篇David Tribble 写的文章看了一下,文章中关于跳出多重循环的原文如下:
      Other languages, such as C and C++, do not provide a mechanism to exit more than one level of loop nesting, so goto statements must be employed.
      Example N-2 - Exiting a Nested Loop
      // [C / C++]
      // Exiting a nested loop without labeled loops

      for (;;)
      {
      char line[80];
      int len;

      len = readLine(line);
      if (len > 0)
      {
      for (int i = 0; i < len; i++)
      {
      int ch;

      ch = line[i];
      if (ch == '#')
      goto endReadLoop; // Exit outer for-loop

      parse(ch);
      }
      }
      else
      return;
      }
      endReadLoop:;
      The alternative is to use an extra variable and extra if statements to avoid the use of gotos, as in Example L-2.
      Example N-3 - Exiting a Nested Loop Without Goto
      // [C / C++]
      // Exiting a nested loop without goto

      bool notDone = true;

      while (notDone)
      {
      char line[80];
      int len;

      len = readLine(line);
      if (len > 0)
      {
      for (int i = 0; notDone && i < len; i++)
      {
      int ch;

      ch = line[i];
      if (ch == '#')
      #GOTO 发表于2006-07-12 20:17:00  IP: 219.134.145.*
      说句实在话.作者上面的解释有点牵强.要是作者不解释的话,我觉得大家还是不能明白其中的道理啊.
      关于goto用于不用,其实也是看情况和时候而定的.只是现在很多书籍和文章都在说要慎用.只是这个"慎用",经过这些年的退化,是不是已经变成了,最好不用..所以慢慢的这个goto就会退化掉吧..反正我写的东东里..几乎是没有用过..
      #oyd 发表于2006-07-24 13:43:00  IP: 124.42.80.*
      用不用goto,我觉得还是一个程序员的自律问题。
      当我看到一段代码中有goto,如果我很容易就想到了一种很好的goto的替代方法,那么我内心中就会鄙视这个用goto的程序员,反之,我会觉得他的代码很巧妙,且不拘泥于成规。
      所以,用不用goto,自己看着办吧
      #nyzfl 发表于2007-04-03 10:18:49  IP: 123.113.203.*
      不错 楼上说的对
      #baodi_z 发表于2007-07-05 17:18:53  IP: 59.61.91.*
      我觉得goto用不用都不是什么大问题,关键在鱼写代码的人自己要有清楚思路逻辑,如果他自己思路不清,逻辑混乱,即使没有用goto,写出的程序仍然杂乱,不易于阅读。
      我本人有时还是使用的goto的,基本上有一个原则:
      一个函数只能有一个lbabel供goto跳转,goto必须是往后跳,不能回到前面位置的代码行。
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 周伟明