質問

ここで警告を受けます。警告は「整数変換が切り捨てられた結果」と言います。TypeCastを削除しても持続します(U16)。

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

この警告を解決する方法私は以下のコードを使いました、そして警告を削除しましたが、それをする正しい方法ではないかどうかはわからない。

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

事前にありがとう!

役に立ちましたか?

解決

cコンパイラは、それらを保持するのに十分な大きさではないl値に定数値を割り当てようとするとは好きではありません。私は、コンパイラの作者が定数を宣言しているのかどうかを知っていることを知っていると仮定していると思います。これが機能する解決策ですが、理想的な結果ではないかもしれません:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top