PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
Re: [問題] 類別跟迴圈加不加分號的問題
作者:
SeamusBerloz
(軒摩斯)
2019-01-14 20:08:49
大括號 {},也就是指區塊。
區塊本身不需要分號結尾。
要不要加分號結尾?不需要猜,只要記得,
敘述、宣告才要加分號結尾。
以下 {} 故意寫成一行,用於說明區塊的效果。
多個敘述、宣告可以用 {} 包起來,視為一整體 (或單一行) 看待:
i = i + 1;
k += i * 10;
j = foo(k);
若改成:
{i = i + 1; k += i * 10; j = foo(k);}
區塊沒有分號結尾。
while / do-while 敘述則是:
do 單行敘述; while(條件);
作者:
cole945
(躂躂..)
2019-01-14 21:12:00
呃..被講完了..只好推囧
作者:
x246libra
(楓)
2019-01-14 22:54:00
完美解說
作者:
me8z7gnk
(SONG-SONG)
2019-01-15 00:59:00
謝謝解說我多年的疑惑解說太完整了 完全解答
作者:
CoNsTaR
((const *))
2019-01-15 13:06:00
在不加分號的地方加,對編譯器來講那個分號就是空敘述單純這樣而已吧,沒有那麼複雜啊 orz所以你要在 block 後面加 100 個分號編譯器也不會管你因為通通都是空敘述,都是業障
作者:
LPH66
(-6.2598534e+18f)
2019-01-15 13:23:00
補充一個:lambda 先寫起來放的時候也是因宣告變數故要分號auto lambda=[](){return 42;}; //這裡指左邊第二個分號對於這個我個人習慣是會先把 {}; 打好再寫裡面在只有 {} 沒有內容時很容易知道這裡是不是該加分號的地方
作者:
me8z7gnk
(SONG-SONG)
2019-01-15 21:36:00
謝謝C大跟L大 我原本一直卡在類別為什麼結尾要加分號現在看完這篇 豁然開朗阿!
作者:
cole945
(躂躂..)
2019-01-16 08:24:00
本文有舉例結尾分號有差.if(){};;;else{}不行多加分號會影響parsing,並非全無意, do{}while();在macro很好用.可以看
https://kernelnewbies.org/FAQ/DoWhile0
裡的例子
作者:
SeamusBerloz
(軒摩斯)
2019-01-16 09:40:00
拋磚引玉:
http://c-faq.com/cpp/multistmt.html
作者:
me8z7gnk
(SONG-SONG)
2019-01-16 20:29:00
謝謝col大跟Se大提醒因為之前被教說能使用inline就使用 inline所以只把呼叫 macro 最後不能加分號背起來並沒有了解原意 現在才了解do while(0) 之前看過以為只做一次沒什麼特別原來是用在 macro 上 這麼好用
作者:
TitanEric
(泰坦)
2019-01-18 00:31:00
大推
作者:
hohamita
(HOHA)
2019-01-18 13:37:00
推 感謝解說!
繼續閱讀
[問題] 類別跟迴圈加不加分號的問題
me8z7gnk
[問題] Multimedia Timer 超時的問題
licheer
[問題] 中央考題
ABoxOfChoco
[問題] 字串移除重複的字母 string使用問題
yoyo890121
[心得] relocation
descent
[問題] MFC程式非視窗類想要使用計時器!?
james999
[問題] 一題C++的題目
lionlin
[問題]linked list反轉串列 使用call by address
me8z7gnk
[分享] Unity開發元老抨擊:C++ 20新功能造成編
name2name2
[問題] 關於 set 的效率問題
nevikw39
Links
booklink
Contact Us: admin [ a t ] ucptt.com