Fal*_*ise 3 c++ arrays boolean initialization
我想将我的二维布尔数组中的所有元素初始化为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;
}
Run Code Online (Sandbox Code Playgroud)
但是我对输出感到非常困惑。例如,如果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
Run Code Online (Sandbox Code Playgroud)
那么,代码有什么问题呢?
#include <iostream>
template<int N>
void print(bool x[N][N] )
{
for(int i=0; i<N; i++)
{
for(int j=0; j<N;j++)
std::cout << x[i][j] << " ";
std::cout << "\n";
}
std::cout << "\n\n";
};
int main()
{
bool a[10][10];
bool b[10][10]{};
print(a);
print(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
./main
120 29 96 0 0 0 0 0 131 10
64 0 0 0 0 0 168 161 188 139
4 127 0 0 255 255 0 0 1 0
0 0 0 176 40 152 253 127 0 0
153 10 64 0 0 0 0 0 2 0
0 0 0 0 0 0 221 11 64 0
0 0 0 0 65 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
144 11 64 0 0 0 0 0 160 8
64 0 0 0 0 0 32 177 40 152
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
使用 for 结构初始化值,与您打印它的方式完全一样
bool arr[n][m];
for(size_t i = 0; i < n; i++){
for(size_t j = 0; j < m; j++){
arr[i][j]=false;
}
}
Run Code Online (Sandbox Code Playgroud)