2012-02-28 33 views
2

ここで警告が表示されます。警告は「整数変換結果が切り捨てられます」と表示します。タイプキャスト(U16)を削除してもそれは維持されます。警告: '整数変換結果が切り捨てられます'

typedef unsigned short U16; 
U16 mask; 
mask = ~(U16)(0x8000); 

この警告はどうすれば解決できますか?私は以下のコードを使用し、警告を削除しましたが、その正しい方法で行うかどうかは不明です。

mask = (U16)(~(U32)(0x8000)); 

ありがとうございます!

答えて

1

定数を保持するのに十分でないL値に定数値を代入しようとすると、Cコンパイラが気に入らない。私は、コンパイラの作成者は定数を宣言しているので、どの値を使うべきかを知っていると推測します。そのため、値を切り捨てる可能性がある場合は何かが間違っているはずです。これはうまくいく解決策ですが、あなたの理想的な結果にはならないかもしれません。

typedef unsigned short U16; 
U16 mask; 
mask = 0x7fff; //~0x8000; 
+0

私はこれをコードbcomesとして読まないでください。しかし、これは複雑なコードなしでコンパイラのエラーを避けるための最高の唯一のソリューションです! – Aadishri

関連する問題