メインコンテンツ

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

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

There shall be no implicit floating-integral conversions.

説明

ルール定義

There shall be no implicit floating-integral conversions. 1

根拠

浮動小数点型を整数型に変換すると、情報が失われます。浮動小数点型から整数型に明示的にキャストしている場合を除き、情報の喪失が意図的かどうかが明確ではありません。また、浮動小数点値が整数型で表現できない場合、その動作は未定義になります。

整数型から浮動小数点型への変換により、値の不正確な表現が発生する可能性があります。変換の誤差が以降の演算で累積し、予期しない結果につながる可能性があります。

Polyspace 実装

チェッカーは、浮動小数点型 (float および double) と整数型 (shortint など) の間の暗黙的な変換にフラグを設定します。

5-0-4 および 5-0-6 が同時に適用される場合、このルールが優先されます。

トラブルシューティング

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

すべて展開する

typedef signed int int32_t;
typedef float float32_t;

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