0

shorta を 16 進数値に初期化したいのですが、コンパイラから切り捨ての警告が表示されます。short明らかに、正の値に設定しようとしていると考えています。

short my_value = 0xF00D; // Compiler sees "my_value = 61453"

この警告をどのように回避しますか? 負の値を使用することもできますが、

short my_value = -4083; // In 2's complement this is 0xF00D

しかし、私のコードでは、16 進数を使用する方がはるかに理解しやすいです。

4

2 に答える 2

3

定数をキャストします。

short my_value = (short)0xF00D;

編集:最初の説明は頭の中で理にかなっていましたが、さらに考えてみると、ちょっと間違っていました。それでも、これにより警告が抑制され、期待どおりの結果が得られるはずです。

于 2010-11-18T20:23:21.070 に答える
0

短く収まらない int 値を割り当てているため、警告が表示されます。C 型キャストを使用してコンパイラをサイレントにすることもできますが、通常は悪い習慣です。

より良い方法は、それを行わず、負の値を割り当てることです。または、16 進値の方が適切な場合は、unsigned short に切り替えます。

于 2010-11-18T21:03:28.183 に答える