【发布时间】:2016-12-27 17:46:14
【问题描述】:
我想将二维布尔数组中的所有元素初始化为 false。
size_t n, m;
cin >> n >> m;
bool arr[n][m] = {false};
for(size_t i = 0; i < n; i++){
for(size_t j = 0; j < m; j++){
cout << arr[i][j] << " ";
}
cout << endl;
}
但我对输出感到非常困惑。例如,如果 n = 5 和 m = 5,我有以下内容:
0 27 64 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
那么,代码有什么问题?
【问题讨论】:
-
C++ 不支持可变长度数组。对于编译器使用的任何非标准扩展,您都应该参考文档。
-
No repro 必须是未定义的行为。
-
@HumamHelfawi 这不是那个问题的骗子,因为它表现出与答案中提供的不同的行为(答案说每个没有初始化器的元素都将被值初始化——对于整数类型设置为 0)
-
谢谢!现在我明白了。
-
使用向量。
std::vector<std::vector<bool>> vec(n, std::vector<bool>(m,false));
标签: c++ arrays initialization boolean