【问题标题】:warning : 'integer conversion results in truncation'警告:'整数转换导致截断'
【发布时间】:2012-02-28 09:30:00
【问题描述】:

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

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

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

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

提前致谢!

【问题讨论】:

    标签: compiler-warnings bitwise-operators ones-complement


    【解决方案1】:

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

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

    【讨论】:

    • 我不得不避免这种情况,因为代码变得有点不可读。但是,这是避免编译器错误而无需复杂代码的最佳且唯一的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多