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