将整数值存储在bool变量中

storing integer values in a bool variable

本文关键字:bool 变量 存储 整数      更新时间:2023-10-16

我试图将整数值存储在布尔数组中,但是当我打印出值时,它们只出现为1和0,我认为它们代表真和假。是否有任何方法来存储值大于1或小于0的bool?提前感谢您的帮助!: D

下面是我要做的一个例子:

#include <iostream>
#include <string>
using namespace std;
int main(){
    bool set[2];
    set[0] = 7;
    set[1] = 13;
    string setNotation = "{"+to_string(set[0])+", "+to_string(set[1])+"}";
    cout << setNotation << endl; //prints out as {1, 1} instead of {7, 13}
    //note: I have to use to_string to append and not cout << "{" << set[0] << ...
    //because I'm using this in a method that returns a string
    return 0;
}

不,bool被设计为只存储1或0。很抱歉。您可以尝试使用int

Bool数据类型在c++内部实现为整数,但Bool数据类型只允许值为1和0。所以你不能在bool类型的变量中存储除1和0以外的任何值

您只能使用bool数组并像二进制一样读取它,如果这是您想要做的。例如,整数7由3元素数组表示:

arr[0]=1
arr[1]=1
arr[2]=1

现在你有111(二进制)= 7

您可以使用原始指针,即*(unsigned char *)&set[0] = 7;

然而,这不是一个好主意,这些情况(在bool中存储的值不是0或1)通常只是由于代码中的错误(使用未初始化的内存等)而发生。变量的行为是未定义的,可以是相当令人惊讶的,例如!set[0]在你的程序中计算为6(即set[0]!set[0]在条件中都表现为true),但在gdb中打印时,!set[0]计算为false,这在调试复杂的程序时可能真的很混乱…

两个字:不建议