Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么样的陈述不';t要求在C+中以分号结尾+;?_C++_Parsing_Syntax_Grammar - Fatal编程技术网

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,损坏这些类型的语句的语法。这就是我如何编制这份清单的原因


希望这有帮助是选择语句,则以下

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) 函数定义也不是语句。