首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C++中,哪种语句不需要分号结尾?

问在C++中,哪种语句不需要分号结尾?
EN

Stack Overflow用户
提问于 2012-06-15 08:55:50
回答 3查看 5.4K关注 0票数 3

有关于哪些语句不需要以分号结尾的规则吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-15 09:02:29

是的,它在C++标准的第6节“声明”中涉及到( C++03的第6节,它可能在C++11中发生了变化,但我目前无法访问它)。

有大量的语句类型,并不是所有的语句类型都需要终止。例如,以下if是一条选择语句:

代码语言:javascript
复制
if (i == 1) {
    doSomething();
}

并且不要求以分号结尾。

在所涵盖的不同语句中,要求是:

代码语言:javascript
复制
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)虽然有时看起来它们以分号结尾,但事实并非如此。声明:

代码语言:javascript
复制
if (i == 1) doSomething();

使用分号终止内部表达式语句,而不是复合语句,当您检查上面第一个包含在{}大括号中的代码段时,这一点应该很明显。

(b) do需要while表达式后面的分号。

票数 3
EN

Stack Overflow用户

发布于 2012-06-15 09:00:12

块语句后面不需要有分号,这就是为什么我们不需要在这段代码的右大括号后面有分号的原因:

代码语言:javascript
复制
while (true) {
    cout << "Hi!" << endl;
}

任何充当语句的表达式后面都必须有分号,这就是为什么上面的cout行以分号结尾的原因。

控制语句(if、do、while、switch等)它们后面不需要分号,除了do ... while,后面必须有分号。但是,如果它们控制的语句以分号结尾,则整个语句本身也将以分号结尾。例如:

代码语言:javascript
复制
while (true) cout << "Are we there yet?" << endl;

以分号结束,因为受控cout语句以分号结束。

控制流更改语句(如break、continue、goto、return和throw )后面必须有分号。

像函数原型、变量声明和struct/class/union声明这样的声明语句必须以分号结尾。

有关语句类型及其语法的完整列表,您可以查看C++ ISO标准的§6,其中详细介绍了每种类型语句的语法。这就是我是如何编制这个列表的。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2012-06-15 12:05:41

  • 宏定义也不需要。

  • 所有关键字(如if、else、for、while、do、main)在括号open和close之后,不需要分号。

3.在这些标识符后,需要使用空、整型、字符串和长etc..no分号。

4.当定义项出现时,函数也不需要分号。

例如void fun(){........}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11043340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档