什么时候用c/c ++命令分号?

cpu*_*uer 5 c c++ syntax

if(...) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中看来a ;是可选的,什么时候}在c/c ++中需要后用分号?

iam*_*ind 14

int a[2] = {1,2}, j = 5;
Run Code Online (Sandbox Code Playgroud)

当数组或结构的初始化完成后,{}所有后续变量都被声明,.

编辑:当你改变你的问题; ;是后强制class,enum,初始化语法声明.

class A {};  // same for `struct
enum E {};   // enum class (c++0x)
int a[] = {1,2};  // array or object initialization
Run Code Online (Sandbox Code Playgroud)

  • @cpuer这不是理由,而是`struct {int i; } s;`在C和C++中有意义.当你不需要对象(这里,`s`)时,```仍然存在. (3认同)
  • 不要忘记[`do {...} while(...);`](http://stackoverflow.com/questions/942251/in-cc-why-does-the-do-whileexpression-need -a-分号) (2认同)

Ern*_*ill 6

分号本身是一个空语句,您可以在语句合法的任何地方添加额外的分号.因此,在跟随你的大括号之后立即加上分号是合法的if,尽管它根本不相关if.我可以想到在C++中的类声明之后,在括号之后需要分号的地方.

  • @cpuer:因为您可以在定义站点声明实例.例如:`struct ABC {int foo; int bar; 例子;`创建一个名为`example`的变量,类型为`ABC`. (9认同)
  • 为什么在类声明之后需要“;”,而在函数声明之后不需要?在这种情况下,如果没有`;`,C++ 解析器就无法解析它? (2认同)