在以下代码中,假定 int 为 16 位。
int f(void)
{
int i = 0;
return i > 0xffff;
}
|
由于十六进制常量的类型为 int(在二进制补码机器上,值为 – 1)或 unsigned int(值为 65535),因此在 – Xs 和 -Xt 模式下比较为真,在 – Xa 和 – Xc 模式下比较为假。
同样,相应的强制类型转换澄清代码并禁止警告:
-Xt, -Xs modes:
i > (int)0xffff
-Xa, -Xc modes:
i > (unsigned int)0xffff
or
i > 0xffffU
|