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

时间:2016-09-21 07:56:19

标签: c++ c++11

bool is 8 bits long

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

  

0000 0010 - > 2

(十进制表示)

例如:bool x;

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

由于

2 个答案:

答案 0 :(得分:8)

不是C ++,没有。 bool可以truefalse。在没有首先调用未定义的行为的情况下,无法在2中存储bool。一旦调用了未定义的行为,就可能发生任何。 (包括除了在演示和重要客户时的预期

。)

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

答案 1 :(得分:6)

  

bool是8位长

必然是真的。所有标准都说它必须能够保留truefalse:其sizeof实现定义。您可以推断它必须至少 1,因为sizeof类型必须是整数类型,否则它不能为零指针算术< bool s数组上会破坏。

所以不要尝试发送值2 - 您必须使用未定义来呈现程序的行为。