e257.c

定数をキャストする前に型を見直すこと


修正前 int main() { char c = 0x80; if ( c == (char)0x80 ){ printf ( "%x¥n", (char)0x80 ); } }
修正後 int main() { unsigned char c = 0x80; if ( c == 0x80 ){ printf ( "%x¥n", 0x80 ); } }
解説 定数にキャストしたくなったら、 比較、代入の対象となる変数の型を見直しましょう。 特に理由もなく、 狭い型(char/short)を使用しているならば、 int型の利用を検討し、 狭い型(char/short)が必要であるならば、 unsigned修飾子の利用を検討してください。