Oracle Solaris Studio 12.2: C ユーザーガイド

6.4.7 例 3 : 整数定数

次のコードでは、int が 16 ビットであると仮定します。


int f(void)
{
    int i = 0;

    return i > 0xffff;
}

16 進定数の型は int (2 の補数を使用するマシン上で - 1 の値を持つ) または unsigned int (65535 の値を持つ) のどちらかです。比較結果は、ANSI 以前モード (-Xs) と移行モード (-Xt) では真で、ANSI モード (-Xa) と準拠モード (-Xc) では偽です。

この場合も、キャストを適切に使用することにより、コードが読みやすくなり、警告も発行されなくなります。


-Xt, -Xs modes:
    i > (int)0xffff

-Xa, -Xc modes:
    i > (unsigned int)0xffff
       or
    i > 0xffffU

接尾辞 U 文字は ISO C の新しい機能であるため、古いコンパイラではおそらくエラーメッセージが生成されます。