unsigned char a, b;
b = something();
a = ~b;
Run Code Online (Sandbox Code Playgroud)
静态分析器抱怨最后一行中的截断,可能是因为b在其位被翻转之前被提升为int并且结果将是int类型.
我只对提升的int的最后一个字节感兴趣 - 如果b是0x55,我需要a是0xAA.我的问题是,C规范是否说明截断发生的方式,还是实现定义/未定义?是否可以保证a总是会在合格的平台上分配我期望的值或者它可能出错?
当然,在分配之前投射结果会使静态分析器静音,但我想知道首先忽略此警告是否安全.