将整数值存储在bool变量中
storing integer values in a bool variable
我试图将整数值存储在布尔数组中,但是当我打印出值时,它们只出现为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
,这在调试复杂的程序时可能真的很混乱…
两个字:不建议
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 如果 (QString.contains()) 不能正常工作,请使用 temp bool 变量进行更正
- 我可以在没有静音的线程中读取线程中的bool变量
- 在Tensorflow源代码中的Bool变量的初始化
- 线程同步:等待两个bool变量
- 为什么除了直接赋值0之外,bool变量不能设置为0
- 返回递归函数的bool意外地更改了变量
- 如何在bool值为真后停止增加变量
- bool类型变量如何存储在内存中?(c++)
- 我必须对<bool>布尔变量使用原子"exit"吗?
- 可移植的c++ 11方法,同时等待套接字和bool变量
- c++静态bool变量
- 我不断收到一个错误:"no operator >> matches thees operands" int 和 bool 变量。在>>运算符过载
- 将整数值存储在bool变量中