是否有关于哪些陈述不需要用分号终止的规则?
答案 0 :(得分:3)
块语句后面不需要分号,这就是为什么我们在这段代码中的close括号后不需要分号:
while (true) {
cout << "Hi!" << endl;
}
任何充当语句的表达式都必须在其后面加一个分号,这就是为什么上面的cout
行以分号结束的原因。
控制语句(if
,do
,while
,switch
等)除了do ... while
之外不需要分号,必须使用分号之后有一个分号。但是,如果它们控制的语句以分号结尾,则整个语句本身将会。例如:
while (true) cout << "Are we there yet?" << endl;
以分号结尾,因为受控cout
语句以分号结尾。
控件流更改语句(如break
,continue
,goto
,return
和throw
必须在其后面加分号。
声明语句(如函数原型,变量声明和struct / class / union声明)必须以分号结束。
有关语句类型及其语法的完整列表,您可以查看C ++ ISO标准的第6节,该标准将覆盖每种类型语句的语法。这就是我能够编译这个列表的方式。
希望这有帮助!
答案 1 :(得分:2)
是的,它已在C ++标准的第6节“声明”中介绍(C ++ 03的第6节,它可能在C ++ 11中有所改变,但我目前无法访问那个)
有大量的语句类型,并不是所有语句都需要终止。例如,以下if
是一个选择语句:
if (i == 1) {
doSomething();
}
并且没有要求用分号终止它。
在所涵盖的不同陈述中,要求是:
Statement type Termination required?
============== =====================
labelled statement N (a)
expression Y
compound statements N (a)
selection statements N (a)
iteration statements N (a) (b)
jump statements Y
declaration statement Y
(a)虽然有时出现这些以分号结尾,但事实并非如此。声明:
if (i == 1) doSomething();
使用分号终止内部表达式语句,而不是复合语句,当您检查上面第一个具有{}
括号内的代码段时,这应该是显而易见的。
(b)do
在while
表达式后需要分号。
答案 2 :(得分:0)
MACRO定义也不需要。
括号打开然后关闭后的所有关键字(例如if,else,for,while,do,main)不需要如前所述的分号。
3.这些标识符之后为void,int,string,long等。不需要分号。
4.当定义出现时,功能也不需要分号。
如void fun(){........}