2

我在这里收到警告。警告说“整数转换导致截断”。即使我删除了类型转换(U16),它仍然存在。

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

如何解决此警告?我使用了下面的代码并删除了警告,但不确定它是否正确。

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

提前致谢!

4

1 回答 1

1

当您尝试将常量值分配给不足以容纳它们的 L 值时,C 编译器不喜欢。我猜编译器作者假设您知道应该使用什么值,因为您声明了一个常量,因此如果您可能截断它的值,则一定有问题。这是一个可行的解决方案,但可能不是您理想的结果:

typedef unsigned short  U16;
U16 mask;
mask = 0x7fff; //~0x8000;
于 2012-03-06T18:48:43.490 回答