相关疑难解决方法(0)

将int截断为char - 是否已定义?

unsigned char a, b;
b = something();
a = ~b;
Run Code Online (Sandbox Code Playgroud)

静态分析器抱怨最后一行中的截断,可能是因为b在其位被翻转之前被提升为int并且结果将是int类型.

我只对提升的int的最后一个字节感兴趣 - 如果b是0x55,我需要a是0xAA.我的问题是,C规范是否说明截断发生的方式,还是实现定义/未定义?是否可以保证a总是会在合格的平台上分配我期望的值或者它可能出错?

当然,在分配之前投射结果会使静态分析器静音,但我想知道首先忽略此警告是否安全.

c bitwise-operators integer-promotion

5
推荐指数
2
解决办法
6236
查看次数

标签 统计

bitwise-operators ×1

c ×1

integer-promotion ×1