Renesas Synergy™

FAQ 1008080 : int の最小値(-2147483648)で W2172: constant out of range が表示されます。

回答

data = -2147483648;
上記は、 「2147483648に単項-(マイナス)演算子が適用された式」という意味になります。
したがって、「2147483648」は、 signed intの範囲を越えているので警告メッセージが出力されます。

limts.hでは、上記を考慮して以下のように設定しています。
#define INT_MIN (-INT_MAX-1)
このマクロ名を使用してください。

“-2147483648”の場合にsigned intの範囲内であると考えて使用し、 演算などで符号拡張(signed int→unsigned int) が起こることを想定してない可能性が高いので、 上記警告メッセージを出力するようにしてあります。

たとえば、次のような場合に、値が変わってきています。

        signed int si;

        si = -2147483648 >> 1;  /* 正の数 */
        si = INT_MIN >> 1;      /* 負の数 */



適用製品
V850用コンパイラパッケージ [CA850]
他にご質問がございましたら、リクエストを送信してください