2012-01-31 8 views
7

C++言語の定義は、charをboolにキャストしてからcharに戻すことについて約束していることは何ですか?ブールを通る往復キャストはどうなりますか?

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

この場合、ほとんどのコンパイラは言語の保証を超えて何をしていますか? true又はfalse(4.12)のいずれかでbool結果に変換

答えて

13

これは、元の値がゼロであるか非ゼロであるかに応じて、0または1の値を与えます。 boolへの変換

true又はfalseの値を与える:

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

ゼロにfalseを変換し、一方にtrue

4.7/4ソース・タイプがboolある場合、値falseがゼロに変換され、 値trueが変換されます1に。

3

積分値、及び1又は0いずれかでbool整数値に変換した結果(4.5(6))。第4章(標準的な変換)を参照してください。

2

boolに変換すると、ゼロとnullはfalseに変換され、その他はすべてtrueに変換されます。 boolからの変換がfalseの場合は0に変換され、trueの場合は1に変換されます。

関連する問題