是否有关于哪些陈述不需要以分号终止的规则?
是的,它在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
表达后需要分叉。
块语句不需要在它们后面加分号,这就是为什么我们在这段代码中的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节,该标准覆盖了每种类型语句的语法。这就是我能够编译这个列表的方式。
希望这可以帮助!
3.这些标识符之后为void,int,string,long等。不需要分号。
4.当定义出现时,功能也不需要分号。
比如void fun(){........}