c - 矩阵未在声明中填零

标签 c gcc codeblocks c99 c89

当我偶然发现这种“奇怪”的行为时,我正试图在另一个函数中调试我的代码。

#include <stdio.h>

#define MAX 20

int main(void) {
    int matrix[MAX][MAX] = {{0}};

    return 0;
}

如果我在 return 0; 行上设置断点,然后使用 Code::Blocks 查看局部变量,矩阵不会完全用零填充。 第一行是,但数组的其余部分只包含随机垃圾。

我知道我可以做一个双 for 循环来手动将所有内容初始化为零,但是 C 标准不应该用 {{0}} 初始化器?

也许是因为漫长的一天,我累了,但我可以发誓我知道这一点。

我尝试使用不同的标准进行编译(使用 Code::Blocks 捆绑的 gcc 编译器):-std=c89-std= c99, std=c11 但都是一样的

有什么问题吗?你能给我解释一下吗?

编辑: 我特别询问 {{0}} 初始化程序。

我一直认为它会将所有列和所有行填充为零。

编辑 2: 我特别讨厌 Code::Blocks 及其捆绑的 GCC。其他评论说该代码适用于不同的平台。但为什么它对我不起作用? :/

谢谢。

最佳答案

我想通了。

即使编译器上没有任何优化标志,调试器信息也是错误的..

所以我用两个 for 循环打印出这些值并且它被正确初始化,即使调试器另有说明(奇怪)。

谢谢大家的意见

关于c - 矩阵未在声明中填零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33640600/

相关文章:

c - OpenCV 分组白色像素

gcc - Cuda Clang 和 OS X Mavericks

c - 将 GNU 科学库与 Code::Blocks 一起使用时出错

c++ - SFML如何使各种形状沿随机方向移动?

C - 数字中数字的位置

c - 将字符串的地址传递给 fscanf() 会阻止不相关的代码块运行

python - 在 Cython 中使用 zlib 压缩 NumPy 数组

c - 消息队列错误 : No message of desired type

c - 分配指针与 memcpy/memmove

linux - g++ 静态链接到 libstdc++.a 错误