7

C++ 言語定義は、char を bool にキャストしてから再び char にキャストすることについて何を約束していますか?

char original = 255;
bool next = original;
char final = next;

また、この場合、言語が保証するものを超えて、ほとんどのコンパイラは何をしますか?

4

3 に答える 3

14

これにより、元の値がゼロか非ゼロかによって、ゼロまたは 1 の値が得られます。

に変換すると、またはboolの値が得られます。truefalse

4.12 ゼロ値、ヌル ポインター値、またはヌル メンバー ポインター値は に変換されfalseます。その他の値は に変換されtrueます。

に戻すと、0 と1にchar変換されます。falsetrue

4.7/4 ソース タイプが の場合bool、値falseは 0 に変換され、値trueは 1 に変換されます。

于 2012-01-31T15:46:16.347 に答える
3

整数値に変換するboolと、trueまたはfalse(4.12) になり、bool整数値に変換すると、1または0(4.5(6)) になります。第 4 章 (標準変換) を参照してください。

于 2012-01-31T15:46:08.530 に答える
2

bool に変換すると zero と null が false に変換され、それ以外はすべて true に変換されます。bool から変換すると、false は 0 に変換され、true は 1 に変換されます。

于 2012-01-31T15:48:15.533 に答える