メインコンテンツ

MISRA C++:2023 Rule 5.13.3

Octal constants shall not be used

R2024b 以降

説明

ルール定義

Octal constants shall not be used. 1

根拠

8 進数の定数は先頭の 0 で表されます。冗長な先頭の 0 のため、8 進数の定数と 10 進数の定数を混同する可能性があります。

\ で始まる 8 進数のエスケープ シーケンスは準拠しています。

Polyspace 実装

ルール チェッカーは先頭が 0 で始まる定数に対して違反を報告します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

チェッカーは、すべての 8 進数の定数 (ゼロ以外) にフラグを設定します。

この例では以下のようになります。

  • 8 進数のエスケープ シーケンスに数字の 9 が含まれています。これは 8 進数ではありません。このエスケープ シーケンスには処理系定義の動作があります。

  • 8 進数のエスケープ シーケンス \100 は数字の 64 を表しますが、これはこのルールに準拠しています。

void func(void) {
  int busData[6];
  
  busData[0] = 100;
  busData[1] = 108;
  busData[2] = 052;      //Noncompliant
  busData[3] = 071;      //Noncompliant
  busData[4] = '\109';   //Compliant
  busData[5] = '\100';   //Compliant

}

チェック情報

グループ: Lexical Conventions
カテゴリ: Required

バージョン履歴

R2024b で導入


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.