在C語言中定義結構體時,右大括號后是需要加分號的,在C++中使用class關鍵字定義類時,右大括號后也是需要加分號的,而在定義函數時,右大括號后是不需要加分號的。
對這個問題的解釋就是右花括號}能代表結尾的就不需要加分號。
例如:while循環、for循環、if語句中,右大括號}就能代表這個循環或者語句結束了,所以不需要分號來輔助。
而在
do { }while();
中,執行語句后,再判斷是否執行下一次循環,這里的右大括號}不能代表結尾,需要分號輔助。
定義結構體時,
struct ttt { }a;
在結構體的定義完成之后,可以立馬定義一個變量,所以遇到右大括號不一定就是結尾,因此,此時只能用分號來告訴編譯器該結尾了。
比較官方、正規的說法如下:
語句、定義不需要分號結尾,聲明需要分號結尾。
語句 :
if、for、while都是語句,所以{}本身是語句的一部分。
定義:
void func()
{
}
聲明:
結構體的定義是聲明,所以需要分號結尾。
