这段代码是有效的C++吗?

Cur*_*Guy 8 c++ declaration definition

以下代码是否有效C++?

const int  var = 10;
{ 
   int  var[var]; // why doesn't this give any error ?
}
Run Code Online (Sandbox Code Playgroud)

注意:代码在我的g ++编译器上编译.

Jam*_*lis 19

AS-是什么?不,如果它在功能体内?是.

第一行声明一个名为var值的整数常量10.

大括号开始一个新的块.内的块,一个新的变量声明,命名var,这是阵列int的尺寸等于所述整数常量的先前声明作为值var(10).

最关键的是var指第一变量,直到命名为第二个变量var是完全声明.在第二个声明后面的分号和右括号之间,var引用第二个变量.(如果第二个变量有初始化器,var则会在初始化器之前开始引用第二个变量.)

  • @Matthieu:也许吧.两个月前我会同意,但最近我一直在学习C#,它有关于何时可以重用名称的非常​​严格的规则(例如,`for(int i = ...){} int i;`不是允许,加上其他一些烦恼让我绝对疯狂:-)). (2认同)

Pra*_*rav 5

是的,代码是有效的C++.在本地var宣布之前,非本地可见var.

因此int var[var]定义了一个10个整数的局部数组.