| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 791 人关注过本帖
标题:while{}与while{};一样吗?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 10楼 zy_space
知道這樣動手測試,有悟性了。

授人以渔,不授人以鱼。
2011-12-17 12:53
qhqlzys
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-9-19
收藏
得分:0 
路过
2011-12-17 13:06
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
回复 11楼 TonyDeng
除此之外的区别就不知道了。这个相似的用法在联通算法里压缩路径的时候用到过:
for (i = p; i != id[i]; i = id[i])
          ;



何必等待?梦在今朝
2011-12-17 13:19
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
分號是結束一條語句的,while帶著一塊是一條完整的語句,它需要分號結束。對while(條件) {語句}這樣的形式,因爲花括號中有語句,它本身有分號結束,所以到了while塊的右花括號就不需再加分號(加了也不錯,只是另外一條空語句而已,相當於在while下面一面單獨寫;作一行)。但如果while循環體内沒有任何語句,那麽就必須用分號結束while語句,正規的寫法應是:

while(...)
{
    ;
}

而不是:

while(...)
{
};

後者與while(...){}等同,原理上應報語法錯誤。

如果不寫花括號,則while(...);緊接著的分號是結束while語句的,不作另行計。除我所說第一種正規寫法外,其餘都很容易出現歧義,不提倡——即使真是空循環也最好寫成那樣,很明確,自己和閲讀的人都很清楚寫作者是深知那個的確是空循環而不是疏漏,最好再加註釋寫明“空循環”。我沒把握描紅的寫法會不會報錯或是跟編譯器有關,但從來不會這樣寫,你可以測試一下,以編譯器的結果為準。

函數原型聲明的分號,是原型聲明要求的語法,編譯器據此判斷該行為原型聲明,不視爲函數定義。正如#define不能有分號一樣,都是語法要求。

[ 本帖最后由 TonyDeng 于 2011-12-17 13:38 编辑 ]

授人以渔,不授人以鱼。
2011-12-17 13:35
快速回复:while{}与while{};一样吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026126 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved