警告:'整数转换导致截断'
-
13-11-2019 - |
题
我在这里得到警告。警告称,“整数转换导致截断”。即使我删除键盘(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