Renesas Synergy™

FAQ 104031 : 変数と定数との比較を行うと、期待する結果が得られない場合があります。

回答

H8Sコンパイラを使用した場合、以下の例ではdataに100が代入されます。

例)

long work, data;
work = 5000;
if(work >= 5*10000){
    data = 100;
}else{
    data = 0;
}

ANSI規格により定数はint型として扱われます。

H8Sのint型は16ビット(-32768から32767)であるため、正常に値を比較することが出来ません。

上記では、明示的に"5 * 1000L"とlong型である旨の記載を行う必要があります。

適用製品

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