何时在c/c++中强制要求在}之后使用分号
When is a semicolon after } mandated in c/c++?
if(...) {
...
}
在上面的情况下,;
似乎是可选的,在c/c++中,}
后面的分号什么时候是必要的?
int a[2] = {1,2}, j = 5;
当用{}
完成数组或结构的初始化时,所有后续变量都在,
之后声明。
编辑:当您更改问题时;;
在class
、enum
、初始化语法声明之后是必需的。
class A {}; // same for `struct
enum E {}; // enum class (c++0x)
int a[] = {1,2}; // array or object initialization
根据@rubenfb:的评论
do {} while(condition);
分号本身就是一个空语句,您可以在语句合法的任何地方添加额外的分号。因此,在if
后面的大括号后面加一个分号是合法的,尽管它与if
根本没有关系。我能想到的唯一一个分号是的地方是C++中类声明之后的括号。
如果这是声明的末尾,则右大括号后面的分号是管理性的。如果它是块语句的末尾,则不需要分号,如果使用分号,则会生成一个额外的空语句。如果它是if
-else
或do
-while
(或C++中的try
-catch
(的中间,则这可能是非法的
分号需要在大括号后面的许多位置而不是(在除块语句之外的任何语句的末尾,在任何声明的末尾,即使没有}
,在for
子句中,等等(,但通常大括号不涉及其中的任何一个。
相关文章:
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 在类定义之后定义一个私有方法
- 在循环C++中指定字符串之后,不会打印该字符串
- C++宏忽略之后的内容
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- strncpy之后的char数组的错误行为
- 计算十进制 c++ 之后的数字
- "x += x--"之后的 x 是什么?
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为什么将双精度转换为 int 似乎在第 16 位数字之后将其四舍五入?
- execlp() 在 fork() 之后无法正常工作
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 如何在MISRA C++之后实施CRTP
- 在 OpenCV 的 namedWindow 之前或之后初始化 Tesseract
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- C++ 如果在 if 为 true 之后运行,为什么还会这样做
- 在 fork() 之后,我在我的程序中不断得到相同的 pid
- OpenSSL C API:如何在程序exec()之后恢复TLS连接?
- 了解在返回值之前和之后使用 EAX 的函数调用
- 在 C++20 之前和之后初始化 std::atomic