在C语言中定义结构体时,右大括号后是需要加分号的,在C++中使用class关键字定义类时,右大括号后也是需要加分号的,而在定义函数时,右大括号后是不需要加分号的。
对这个问题的解释就是右花括号}能代表结尾的就不需要加分号。
例如:while循环、for循环、if语句中,右大括号}就能代表这个循环或者语句结束了,所以不需要分号来辅助。
而在
do { }while();
中,执行语句后,再判断是否执行下一次循环,这里的右大括号}不能代表结尾,需要分号辅助。
定义结构体时,
struct ttt { }a;
在结构体的定义完成之后,可以立马定义一个变量,所以遇到右大括号不一定就是结尾,因此,此时只能用分号来告诉编译器该结尾了。
比较官方、正规的说法如下:
语句、定义不需要分号结尾,声明需要分号结尾。
语句 :
if、for、while都是语句,所以{}本身是语句的一部分。
定义:
void func()
{
}
声明:
结构体的定义是声明,所以需要分号结尾。