回答編集履歴

1

一部修正

2020/02/10 02:40

投稿

rubato6809
rubato6809

スコア1382

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 と見做す=キャストしておく、コードを書いた人にそういう意図があったということです。