为什么这个C ++程序符合并运行在CodeBlocks中

时间:2014-10-27 20:04:23

标签: c++ compiler-errors

#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的值为负。

1 个答案:

答案 0 :(得分:0)

可变长度数组不是C ++特性,因此无论n的值是多少,这行都会导致编译器中的编译错误被严格遵守C ++规范。(除非{{1}是n并且可以在编译时确定:

const

可能您正在使用支持可变长度数组的编译器作为扩展。因此,关于什么是有效的规则完全取决于特定的编译器和编译器选项,并且使用此扩展编写的任何代码都不能移植到不支持此非标准功能的编译器。