相关疑难解决方法(0)

C++:为什么bool是8位长?

在C++中,我想知道为什么bool类型是8位长(在我的系统上),只有一位足以保存布尔值?

我曾经认为这是出于性能原因,但是在32位或64位机器上,寄存器为32或64位宽,性能优势是什么?

或者这只是这些"历史"原因之一?

c++ size boolean

127
推荐指数
4
解决办法
6万
查看次数

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

#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; 
}
Run Code Online (Sandbox Code Playgroud)

结果是:

00000001    
00000000
Run Code Online (Sandbox Code Playgroud)

结果不是:

00000011
00000001
Run Code Online (Sandbox Code Playgroud)

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

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

c++ binary boolean shift

3
推荐指数
3
解决办法
1829
查看次数

标签 统计

boolean ×2

c++ ×2

binary ×1

shift ×1

size ×1