我的代码中的错误 - 布尔真值表

Error in my code - Boolean Truth Table

本文关键字:布尔 真值表 错误 代码 我的      更新时间:2023-10-16

我目前正在开发一个打印 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;
}

这是家庭作业,所以我想理解它,而不仅仅是有一个答案。

索引错误。只有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;
}

尝试从数组中读取越界值。

如果需要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];