我目前正在开发一个打印5变量真值表的程序。我正在使用2d数组。我的代码目前生成表,但说它已损坏并且“变量”表周围的堆栈已损坏。有任何帮助吗?
#include <iostream>
using namespace std;
int main() {
bool table[5][32];
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 5; j++) {
table[i][j] = ((i >> j)& 1);
}
}
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 5; j++) {
cout << table[i][j] << " ";
}
cout << endl;
}
return 0;
}
这是家庭作业,所以我想了解它,而不仅仅是回答。
答案 0 :(得分:1)
索引错了。只有table[0]
到table[4]
可用,因此访问table[5]
到table[31]
是非法的。
试试这个:
#include <iostream>
using namespace std;
int main() {
bool table[32][5]; // swap 32 and 5
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 5; j++) {
table[i][j] = ((i >> j)& 1);
}
}
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 5; j++) {
cout << table[i][j] << " ";
}
cout << endl;
}
return 0;
}
答案 1 :(得分:1)
尝试从数组中读取超出范围的值。
如果您需要5x32
矩阵,请使用以下代码:
for (int i = 0; i < 5; i++) { // 32-> 5
for (int j = 0; j < 32; j++) { // 5->32
如果您需要32x5
矩阵,请替换以下代码:
bool table[32][5]; //it was table[5][32];