主要内容

MISRA C:2023 Rule 7.2

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

自 R2024a 起

描述

规则定义

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 的无符号成员。例如,在 32 位环境中,0x9421FFD0 是一个无符号数字,因为它超出了有符号整数的容量。由于该无符号数字缺少后缀 uU,因此 Polyspace 会将其标记出来。在 D 中,无符号数字使用了后缀,因此不会被标记。

检查信息

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

版本历史记录

在 R2024a 中推出

全部展开


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.