今天我意识到将值转换为 bool 是一种魔法:
int value = 0x100;
unsigned char uc = static_cast<unsigned char>(value);
bool b = static_cast<bool>(value);
两者sizeof(uc)
并sizeof(b)
返回1
。我知道uc
它将包含 0x00,因为只复制了 LSB。但是b
会true
,所以我的假设是,当转换为 时bool
,值会被评估而不是被复制。
这个假设正确吗?这是标准的 C++ 行为吗?