整数提升(MISRA C:2012 规则 7.2)

Integer promotion (MISRA C:2012 Rule 7.2)

MISRA 强制对无符号整数常量使用 U 后缀

uint32_t the_answer = 0x42U;

我觉得 U 有点样板,因为没有它,这行代码很容易理解。

所以我想知道这条规则有多重要,以及 unsigned int x = 1 是否真的是隐式整数提升的一个坏例子。

你是对的,根据规则 10.3 的例外情况,此特定示例中的 U 是多余的:

"A non-negative integer constant expression of essentially signed type may be assigned to an object of essentially unsigned type if its value can be represented in that type."

因此,您可以为这个无符号 32 位对象分配一个小于 7FFF FFFF 的有符号整数。