警告:「切り捨ての整数変換結果」
-
13-11-2019 - |
質問
ここで警告を受けます。警告は「整数変換が切り捨てられた結果」と言います。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;
. 所属していません StackOverflow