2010年12月13日月曜日

narrowing conversion of ‘255’ from ‘int’ to ‘char’

なんとなく気分の問題で、gcc のコンパイルオプションで、-std=gnu++0x を付加してみたら
error: narrowing conversion of ‘255’ from ‘int’ to ‘char’ inside { }
なんつうエラーが、以下のコードで起こってしまった。
  char hoge[] = { 
    0x00, 0xFF, 0xFF, 0xFF, 0x00,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0x00, 0xFF, 0xFF, 0xFF, 0x00,
  };
なるほど、signed char として考えれば、0xFF はダメと言えば、ダメ。
暗黒の歴史を垣間見たような気がします。
unsigned char に変更したら、コンパイルは通った。バイナリ値のつもりなんで
どっちでもいいんだけどね。

0 件のコメント: