c - 整数提升(MISRA C :2012 Rule 7. 2)

标签 c integer misra integer-promotion

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/

相关文章:

c - 从文件中读取数字到数组中

c - ARM 程序集 - 是否保证寄存器足够大以容纳指针?

java:将整数作为无符号 8 位整数写入文件

c - C中N个进程之间的管道输出

c - OpenMP 中数组内容的并行更新 - 并发添加元素

python - 如何在 Cython 中有效地使用 Python 风格的整数?

c++ - 为什么转换不起作用?

c - 使用 stringify 运算符 '#' MISRA Rule 20.10 (MISRA C :2012) . 实现 stringify 宏的替代方法是什么

c++ - 从原始内存中读取值(符合 MISRA)

c - 违反 MISRA 规则 10.4