Sun Studio 12:C 用户指南

6.4.7 第三个示例:整型常量

在以下代码中,假定 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

U 后缀字符是 ISO C 的新增功能,对于较旧的编译器它可能会产生错误消息。