整数推广(MISRA C:2012 Rule 7.2)

时间:2018-02-09 10:20:34

标签: c integer misra integer-promotion

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

uint32_t the_answer = 0x42U;

我觉得U有点样板,因为没有它,这条线是可以理解的。

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

1 个答案:

答案 0 :(得分:3)

你是对的,根据规则10.3的例外,这个具体例子中的U是多余的:

“如果其值可以用该类型表示,则可以将基本上为有符号类型的非负整数常量表达式分配给基本无符号类型的对象。”

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