メインコンテンツ

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 .

根拠

定数の符号属性は以下から判定されます。

  • 定数値。

  • 定数の基数: 8 進数、10 進数、16 進数。

  • さまざまな型のサイズ。

  • 使用されている任意の接尾辞。

接尾辞 u または U を使用しない限り、別の開発者はコードを見るときに、定数が符号付きか符号なしかを容易に判別できません。

トラブルシューティング

ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。

すべて展開する

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 ビット環境では符号なしの数値になります。符号なしの数値には接尾辞 u または U が欠如しているため、Polyspace はこれにフラグを設定します。D では、符号なしの数値で接尾辞が使用されているため、この数値にはフラグが設定されません。

チェック情報

グループ: リテラルおよび定数
カテゴリ: 必要
AGC カテゴリ: Readability

バージョン履歴

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.