メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

MISRA C++:2008 Rule 5-0-4

An implicit integral conversion shall not change the signedness of the underlying type.

説明

ルール定義

An implicit integral conversion shall not change the signedness of the underlying type. 1

根拠

符号付きデータ型から符号なしデータ型への一部の変換は、処理系定義の動作につながることがあります。この変換から、予期しない結果がもたらされる可能性があります。

Polyspace 実装

チェッカーは、符号付き整数データ型から符号なし整数データ型への暗黙的な変換 (またはその逆) にフラグを設定します。

チェッカーは、ptrdiff_t が符号付き整数であると仮定します。

レポート内の追加のメッセージ

An implicit integral conversion shall not change the signedness of the underlying type.

潜在型が typename_1 および typename_2 の二項 + オペランドのいずれかに関する暗黙的な変換です。

トラブルシューティング

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

すべて展開する

typedef char int8_t;
typedef unsigned char uint8_t;

void func()
  {
    int8_t s8;
    uint8_t u8;

    s8 = u8; //Noncompliant
    u8 = s8 + u8; //Noncompliant
    u8 = static_cast< uint8_t > ( s8 ) + u8; //Compliant
}

この例では、符号付きデータ型の変数が符号なしデータ型の変数に暗黙的に変換されるとき (またはその逆のとき) にルールに違反します。前の例のように、変換が明示的な場合、ルール違反は発生しません。

チェック情報

グループ: Expressions
カテゴリ: 必要

バージョン履歴

R2013b で導入


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.