主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

MISRA C:2012 Rule 7.2

A “u” or “U” suffix shall be applied to all integer constants that are represented in an unsigned type

描述

规则定义

A “u” or “U” suffix shall be applied to all integer constants that are represented in an unsigned type 1 .

理由

常量的符号由以下因素决定:

  • 常量的值。

  • 常数基数:八进制、十进制或十六进制。

  • 各种类型的尺寸。

  • 使用的任何后缀。

除非您使用后缀 uU,否则其他开发人员查看您的代码时无法轻松判断常量是带符号还是无符号的。

故障排除

如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示

示例

全部展开

const unsigned long C[] = {
	0x9421FFD0, /*Noncompliant*/
	0x5322E762, 
	0x80000000, /*Noncompliant*/
	0x7FFFFFFF,
	0x00000001,
	0x83241947, /*Noncompliant*/
	0x57112957,
	0x2640EA23
};

const unsigned long D[] = {
	0x9421FFD0U, /*Compliant*/
	0x80000000U, /*Compliant*/
	0x83241947U, /*Compliant*/
};

在此示例中,Polyspace® 标记了 C 的无符号成员。例如,0x9421FFD0 在 32 位环境中是一个无符号数,因为它超过了有符号整数的容量。由于无符号数字缺少后缀 uU,因此 Polyspace 将其标记为无符号数字。在 D 中,无符号数字使用后缀,且不标记。

检查信息

组:字面值和常量
类别:必需
AGC 类别:可读性

版本历史记录

在 R2014b 中推出

全部展开


1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.

The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:

  • MISRA C:2004

  • MISRA C:2012

  • MISRA C:2023

  • MISRA C++:2008

  • MISRA C++:2023

MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.