C++ 言語定義は、char を bool にキャストしてから再び char にキャストすることについて何を約束していますか?
char original = 255;
bool next = original;
char final = next;
また、この場合、言語が保証するものを超えて、ほとんどのコンパイラは何をしますか?
C++ 言語定義は、char を bool にキャストしてから再び char にキャストすることについて何を約束していますか?
char original = 255;
bool next = original;
char final = next;
また、この場合、言語が保証するものを超えて、ほとんどのコンパイラは何をしますか?
これにより、元の値がゼロか非ゼロかによって、ゼロまたは 1 の値が得られます。
に変換すると、またはbool
の値が得られます。true
false
4.12 ゼロ値、ヌル ポインター値、またはヌル メンバー ポインター値は に変換され
false
ます。その他の値は に変換されtrue
ます。
に戻すと、0 と1にchar
変換されます。false
true
4.7/4 ソース タイプが の場合
bool
、値false
は 0 に変換され、値true
は 1 に変換されます。
整数値に変換するbool
と、true
またはfalse
(4.12) になり、bool
整数値に変換すると、1
または0
(4.5(6)) になります。第 4 章 (標準変換) を参照してください。
bool に変換すると zero と null が false に変換され、それ以外はすべて true に変換されます。bool から変換すると、false は 0 に変換され、true は 1 に変換されます。