次のコードでは、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