当我在另一个函数中调试我的代码时,我偶然发现了这种“奇怪”的行为。
#include <stdio.h>
#define MAX 20
int main(void) {
int matrix[MAX][MAX] = {{0}};
return 0;
}
如果我在
return 0;
行上设置断点并使用Code::Blocks查看本地变量,矩阵不是完全填充为零的。第一行是零,但数组的其余部分只包含随机垃圾。我知道我可以使用双重
for
循环手动将所有内容初始化为零,但不是应该使用{{0}}
初始化器将此矩阵全部填充为零吗?也许因为今天太累了,但我能发誓我知道这个问题的答案。
我尝试使用不同的标准(使用Code::Blocks捆绑的
gcc
编译器)进行编译:-std=c89
,-std=c99
,std=c11
但结果相同。有什么想法?你能解释一下吗?
编辑: 我特别问的是
{{0}}
初始化器。我一直认为它会将所有列和所有行都填充为零。
编辑2: 我特别关注Code::Blocks及其捆绑的GCC。其他评论说代码在不同平台上可以工作。但为什么对我无效? :/
谢谢。