是否可以在bool中发送十进制值(8位)?如果是,那么如何?

Und*_*our 2 c++ c++11

bool是8位长

如上所述,bool是8位长.那么可以在bool变量中发送值2 .即

0000 0010 - > 2

(十进制表示)

例如: bool x;

如何在上面的bool变量'x'中发送'2'?

谢谢

Mar*_*ica 8

不是用C++,不是.A bool可以持有truefalse.有没有办法来存储2bool没有先调用未定义的行为.一旦调用了未定义的行为,就会发生任何事情.(包括你所期待的,除了 当demo'ing重要客户).

此外,a bool不一定是8位长.它必须至少与char一样大(因为sizeof(bool)必须至少为1),并且unsigned char可以容纳的值范围的限制意味着它必须至少为8位.OTOH,没有什么可以阻止使用bool大于的实现char,并且实际上有char32或64位的实现(主要是DSP芯片).

  • @Matt:这是真的,但它不包含实际的`bool`变量(**spit!**). (2认同)

Bat*_*eba 6

bool是8位长

并非一定如此.所有标准都说它必须能够持有truefalse:它sizeof实现定义的.可以推断,它必须是至少 1,因为类型sizeof必须是整数类型,它不能是零其他指针算法的阵列bools就破.

因此,不要尝试发送值2 - 您必须将程序的行为定义为未定义.

  • 实际上,bool必须是*至少*8位-sizeof确实是实现定义的,但它必须至少为1,并且char必须至少为8位. (3认同)