回答編集履歴
1
一部修正
answer
CHANGED
@@ -9,5 +9,5 @@
|
|
9
9
|
|
10
10
|
提示されたコードはキャストしてもしなくても結果は同じですが、違う場合もあります。それは char の8bitの、最上位ビット(MSB)が1である場合、値としては0x80〜0xffである場合です。たとえば文字列に、いわゆる半角カタカナが含まれているとか。
|
11
11
|
|
12
|
-
最上位ビットが立っている値は符号付きでは負の値です。そのままだと 0x80は -128 = 0xffffff80 に汎整数拡張され
|
12
|
+
最上位ビットが立っている値は符号付きでは負の値です。タダの char は signed char である場合が多いから、そのままだと 0x80は -128 = 0xffffff80 に汎整数拡張される可能性が高い。
|
13
13
|
しかし、これを 128 = 0x00000080 と拡張したい・表示したいから予め unsigned char と見做す=キャストしておく、コードを書いた人にそういう意図があったということです。
|