如上所述,bool是8位长。
那么可以在bool
变量中发送值2。
即
0000 0010 - > 2
(十进制表示)
例如:bool x;
如何在上面的bool变量'x'中发送'2'?
由于
答案 0 :(得分:8)
不是C ++,没有。 bool
可以true
或false
。在没有首先调用未定义的行为的情况下,无法在2
中存储bool
。一旦调用了未定义的行为,就可能发生任何。 (包括除了在演示和重要客户时的预期
此外,bool
不一定是8位长。它必须至少与char一样大(因为sizeof(bool)
必须至少为1),并且unsigned char
可以容纳的值范围的限制意味着它必须至少为8位。 OTOH,没有什么可以阻止使用大于bool
的{{1}}的实现,并且实际上存在char
为32或64位(主要是DSP芯片)的实现。
答案 1 :(得分:6)
bool是8位长
不必然是真的。所有标准都说它必须能够保留true
和false
:其sizeof
是实现定义。您可以推断它必须至少 1,因为sizeof
的类型必须是整数类型,否则它不能为零指针算术< 在bool
s数组上会破坏。
所以不要尝试发送值2 - 您必须使用未定义来呈现程序的行为。