Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

6.3.6 例: 整数定数

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

int f(void)
{
    int i = 0;

    return i > 0xffff;
}

16 進数定数の型が int (2 の補数を使用するマシンで値 – 1) または unsigned int (値 65535) であるため、比較は -Xs および -Xt モードで真になり、-Xa および -Xc モードあるいは -std フラグが指定された場合に偽となります。

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

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

-Xa, -Xc modes, or when -std flag is specified:
    i > (unsigned int)0xffff
       or
    i > 0xffffU

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