Renesas Synergy™

FAQ 104046 : ビットシフト演算を行った時、「C0005 (I) Precision lost」が出力されます。

回答

a = a << 1;」のようなビットシフトを行う場合、aがchar型だとメッセージが出力され、intだとメッセージは出力されません。

ANSIの言語仕様に基づいて、上記、右辺の直値「1」 は、int型と認識されます。

従って、int型をchar型に代入することで"精度が失われる"というインフォメーションを出力します。

また、aがintで型宣言されている場合は、両辺の型がint型(一致)であるためインフォメーションは出力されません。
上式をchar型で扱いたい場合は、右辺をキャストする必要があります。

適用製品

SuperHファミリ用C/C++コンパイラパッケージ
H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください