Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

6.3.6 示例:整数常量

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

U 后缀字符是 ISO C 的一项新功能,在旧版编译器中可能会生成错误消息。