MinGW GCC编译错误的代码,没有警告或错误

cur*_*box 6 c++ mingw g++

你能解释一下为什么MingW GCC在这段代码中没有产生警告:

int main()
{
    int num;
    int people[ num ];
    cout << people[ 0 ];
    cin >> num;
}
Run Code Online (Sandbox Code Playgroud)

但在这里,我只更换了最后一个声明,num = 1现在有一个警告......

int main()
{
    int num;
    int people[ num ];  //warning: 'num is used uninitialized..'
    cout << people[ 0 ];
    num = 1;
}
Run Code Online (Sandbox Code Playgroud)

per*_*eal 2

我认为因为您只使用第一个元素,所以它优化了第一个示例中的 num 。它只是创建一个单元素数组。在第二种情况下,由于您实际使用了 num,它会给出错误