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