【发布时间】:2013-06-27 03:38:05
【问题描述】:
#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。
所有编译器都有这种行为?
【问题讨论】:
-
试试
bool a = 2;。同样的事情也会发生。