C++ 什么样的陈述不';t要求在C+中以分号结尾+;?
关于哪些语句不需要以分号结尾,是否有一条规则?块语句不需要在它们后面有分号,这就是为什么在这段代码中不需要在右大括号后面有分号的原因:C++ 什么样的陈述不';t要求在C+中以分号结尾+;?,c++,parsing,syntax,grammar,C++,Parsing,Syntax,Grammar,关于哪些语句不需要以分号结尾,是否有一条规则?块语句不需要在它们后面有分号,这就是为什么在这段代码中不需要在右大括号后面有分号的原因: while (true) { cout << "Hi!" << endl; } 以分号结尾,因为受控的cout语句以分号结尾 控制流更改语句,如break、continue、goto、return、和throw,后面必须有分号 声明语句(如函数原型、变量声明和结构/类/联合声明)必须以分号结尾 对于完整的语句类型及其语法列表,您
while (true) {
cout << "Hi!" << endl;
}
以分号结尾,因为受控的cout
语句以分号结尾
控制流更改语句,如break
、continue
、goto
、return
、和throw
,后面必须有分号
声明语句(如函数原型、变量声明和结构/类/联合声明)必须以分号结尾
对于完整的语句类型及其语法列表,您可以检查C++ ISO标准的6,损坏这些类型的语句的语法。这就是我如何编制这份清单的原因
希望这有帮助是的,它包含在C++标准的“语句”的第6节(C++ 03的第6节,它可能在C++ 11中发生了改变,但我目前没有访问该值)。 有大量语句类型,并非所有语句类型都需要终止。例如,如果是选择语句,则以下
:
if (i == 1) {
doSomething();
}
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();
}
if (i == 1) doSomething();
使用分号终止内部表达式语句,而不是复合语句,当您检查上面的第一个代码段时,这一点应该很明显,该代码段位于大括号内
(b) do
要求在while
表达式后加分号
宏定义也不需要
括号打开然后关闭后的所有关键字(如if、else、for、while、do、main)不需要前面所述的分号
3.在这些标识符之后,void、int、string、long等。不需要分号
4.当出现定义时,函数也不需要分号
例如void fun(){……..}(1)宏定义不是语句。(2) main
不是关键字。(3) 这些标识符(类型名)出现在许多上下文中,包括内部语句。语句中出现的这些类型名与分号的需要没有关系。(4) 函数定义也不是语句。