c++ - MinGW GCC 在没有警告或错误的情况下编译错误代码

标签 c++ g++ mingw

你能给我解释一下为什么 MingW GCC 在这段代码中不产生警告吗:

int main()
{
    int num;
    int people[ num ];
    cout << people[ 0 ];
    cin >> num;
}

但是在这里,我只用 num = 1 替换了最后一条语句,现在有一个警告...

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

最佳答案

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

关于c++ - MinGW GCC 在没有警告或错误的情况下编译错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5613517/

相关文章:

c++ - 指向对象初始化线程安全的静态指针

c++ - 隐式转换产生 "error: taking address of temporary"(GCC vs clang)

c++ - 得到一堆十字架初始化错误

ubuntu - g++ 已安装,但是当我尝试运行它时,我被告知它没有安装

c++ - 在 C++ 中实现复数类

C++ fstream 不读取整个文件

c++ - 如何修复 'undefined reference' 错误 opencv 和 g++

c++ - 奇怪的运行时错误,似乎与微软有关

c++ - 将已编译的库和包含文件添加到 CMake 项目?

c++ - 字符串正则表达式替换需要 6 个参数但是..MinGW,CMake,w7