#include <iostream>
using namespace std;
int main()
{
cout<<"started "<<endl;
int n= -2;
int array[n];
array[0]=100;
array[1]=200;
cout<<array[0]<<endl;
cout<<array[1]<<endl;
cout<<"over"<<endl;
return 0;
}
为什么要编译并运行?我期望编译错误,因为n
的值为负。
答案 0 :(得分:0)
可变长度数组不是C ++特性,因此无论n
的值是多少,这行都会导致编译器中的编译错误被严格遵守C ++规范。(除非{{1}是n
并且可以在编译时确定:
const
可能您正在使用支持可变长度数组的编译器作为扩展。因此,关于什么是有效的规则完全取决于特定的编译器和编译器选项,并且使用此扩展编写的任何代码都不能移植到不支持此非标准功能的编译器。