メインコンテンツ

AUTOSAR C++14 Rule M5-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.

根拠

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

Polyspace 実装

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

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

トラブルシューティング

ルール違反が想定されるものの、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
}

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

チェック情報

グループ:
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入