免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: hokuhouhi
打印 上一主题 下一主题

[C] break疑问 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
11 [报告]
发表于 2011-11-05 09:30 |只看该作者
// for( ; ; )  这行代码很常见的,无限循环的标准写法
三月廿七 发表于 2011-11-05 08:33



    while(1) 比 for (; ;) 清晰

论坛徽章:
0
12 [报告]
发表于 2011-11-05 09:33 |只看该作者
本帖最后由 三月廿七 于 2011-11-05 09:50 编辑
while(1) 比 for (;  清晰
MMMIX 发表于 2011-11-05 09:30


我也感觉 while(1) 比 for(; ; ) 清晰
不过,写while(1) pc_lint会给警告,  for (; ; )就不会
而且有些人习惯写 for (; ; ), 我也不明白为什么...

比如
static void
traverse_iterative (struct bst_node *node, bst_item_func *action, void *param)
{
  struct bst_node *stack[BST_MAX_HEIGHT];
  size_t height = 0;

  for (;; )
    {
      while (node != NULL)
        {
          if (height >= BST_MAX_HEIGHT)
            {
              fprintf (stderr, "tree too deep\n");
              exit (EXIT_FAILURE);
            }
          stack[height++] = node;
          node = node->bst_link[0];
        }

      if (height == 0)
        break;

      node = stack[–height];
      action (node->bst_data, param);
      node = node->bst_link[1];
    }
}


int partition(Item a[], int l, int r)
  { int i = l-1, j = r; Item v = a[r];
    for (;; )
      {
        while (less(a[++i], v)) ;
        while (less(v, a[--j])) if (j == l) break;
        if (i >= j) break;
        exch(a, a[j]);
      }
    exch(a, a[r]);
    return i;
  }
...

当然,这些也不一定"权威",
至少,我表示对while(1) 是否比 for(; ; ) 清晰存在质疑

ps: glib真是好东西...

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
13 [报告]
发表于 2011-11-05 10:22 |只看该作者
我也感觉 while(1) 比 for(; ; ) 清晰
不过,写while(1) pc_lint会给警告,  for (; ; )就不会
而且有些人习惯写 for (; ; ), 我也不明白为什么...
三月廿七 发表于 2011-11-05 09:33



    有些編譯器也會對 while (1) 給出驚告,這正是許多人選擇 for (;;) 的原因。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
14 [报告]
发表于 2011-11-05 11:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
15 [报告]
发表于 2011-11-05 11:14 |只看该作者
for (;;) = forever

break后面的;;就是写多了吧。

论坛徽章:
0
16 [报告]
发表于 2011-11-05 11:25 |只看该作者
谢谢大家,我明白了,太爱你们了~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP