メインコンテンツ

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

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

An implicit integral or floating-point conversion shall not reduce the size of the underlying type.

説明

ルール定義

An implicit integral or floating-point conversion shall not reduce the size of the underlying type. 1

根拠

潜在型のサイズが小さくなる変換の結果、情報が失われる可能性があります。より範囲が狭い型に明示的にキャストしている場合を除き、情報の喪失が意図的かどうかが明確ではありません。

Polyspace 実装

チェッカーは、型のサイズが小さくなる暗黙的な変換にフラグを設定します。

符号が異なる、より制限された整数への変換である場合、ルール 5-0-4 がルール 5-0-6 よりも優先されます。ルール 5-0-4 のみが表示されます。

トラブルシューティング

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

すべて展開する

typedef signed short int16_t;
typedef signed int int32_t;

void func ( )
  {
    int16_t   s16;;
    int32_t   s32;
    s16 = s32;   //Noncompliant
    s16 = static_cast< int16_t > ( s32 ); //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.