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