gpt4 book ai didi

c++ - bool 变量可以存储超过 0x01 吗?

转载 作者:太空狗 更新时间:2023-10-29 23:25:34 24 4
gpt4 key购买 nike

#include <iostream>
#include <bitset>

using namespace std;

int main()
{
bool a = 0x03;
bitset<8> x(a);
cout<<x<<endl;

a = a>>1;
bitset<8> y(a);
cout<<y<<endl;
}

结果是:

00000001    
00000000

结果:

00000011
00000001

如果我将 a 的类型从 bool 更改为 char,结果将是第二个。这意味着我不能在 bool 中存储超过 0x01 的值,所有大于 0x01 的正确值都被视为 0x01。

所有编译器都有这个行为?

最佳答案

§4.12 boolean 转换 [conv.bool]

1 A prvalue of arithmetic, unscoped enumeration, pointer, or pointer to member type can be converted to a prvalue of type bool. A zero value, null pointer value, or null member pointer value is converted to false; any other value is converted to true. A prvalue of type std::nullptr_t can be converted to a prvalue of type bool; the resulting value is false.

关于c++ - bool 变量可以存储超过 0x01 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17334126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com