今日、値を bool にキャストすることは一種の魔法であることに気付きました。
int value = 0x100;
unsigned char uc = static_cast<unsigned char>(value);
bool b = static_cast<bool>(value);
sizeof(uc)
とsizeof(b)
returnの両方1
。uc
LSB のみがコピーされるため、0x00 が含まれることはわかっています。しかし、b
になるtrue
ので、私の仮定は、にキャストするbool
と、値がコピーされるのではなく評価されるということです。
この仮定は正しいですか?これは標準的な C++ の動作ですか?