MISRA 强制对无符号整数常量使用 U
后缀
uint32_t the_answer = 0x42U;
我觉得 U
有点样板,因为如果没有它,这行代码就很容易理解。
所以我想知道这个规则有多重要,以及 unsigned int x = 1
是否确实是隐式整数提升的一个坏例子。
最佳答案
你是对的,根据规则 10.3 的异常(exception)情况,这个特定示例中的 U 是多余的:
“如果本质上有符号类型的非负整数常量表达式的值可以用该类型表示,则可以将其值分配给本质上无符号类型的对象。”
因此,您可以为这个无符号 32 位对象分配一个小于 7FFF FFFF 的有符号整数。
关于c - 整数提升(MISRA C :2012 Rule 7. 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703624/