是否有关于哪些语句不需要以分号结尾的规则?
3 回答
块语句后面不需要分号,这就是为什么我们在这段代码中的右大括号后面不需要分号:
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
后面必须有分号。
函数原型、变量声明和结构/类/联合声明等声明语句必须以分号结尾。
有关语句类型及其语法的完整列表,您可以查看 C++ ISO 标准的第 6 节,其中介绍了每种语句类型的语法。这就是我能够编译此列表的方式。
希望这可以帮助!
是的,它包含在 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
宏定义也不需要。
括号打开然后关闭后的所有关键字(例如 if、else、for、while、do、main)都不需要如前所述的分号。
3.在这些标识符 void、int、string、long 等之后。不需要分号。
4.当定义出现时,函数也不需要分号。
比如 void fun(){........}