使用 -xc99=none 进行编译时,Sun C 编译器包含数据类型 long long 和 unsigned long long,它们与数据类型 long 类似。long long 数据类型存储 64 位信息;在 SPARC V8 和 x86 上,long 存储 32 位信息。在 SPARC V9 上,long 数据类型存储 64 位信息。long long 数据类型在 -Xc 模式下不可用。
要输出或扫描 long long 数据类型,请在转换说明符前面加字母 ll。例如,要以带符号十进制格式输出 llvar(long long 数据类型的变量),请使用:
printf("%lld\n", llvar); |
某些二元运算符对其操作数的类型进行转换以便两个操作数具有相同的类型,该类型也是结果的类型。下面这些转换称为常见算术转换:
如果两个操作数中的任何一个的类型为 long double,则另一个操作数转换成类型 long double。
否则,如果两个操作数中的任何一个的类型为 double,则另一个操作数转换成类型 double。
否则,如果两个操作数中的任何一个的类型为 float,则另一个操作数转换成类型 float。
否则,对两个操作数执行整型提升。然后,应用以下规则:
如果两个操作数中的任何一个的类型为 unsigned long long int,则另一个操作数转换成类型 unsigned long long int。
如果两个操作数中的任何一个的类型为 long long int,则另一个操作数转换成类型 long long int。
如果两个操作数中的任何一个的类型为 unsigned long int,则另一个操作数转换成类型 unsigned long int。
否则,当仅在 SPARC V9 上进行编译并指定了 cc -xc99=none 时,如果一个操作数的类型为 long int 而另一个操作数的类型为 unsigned int,则两个操作数的类型均转换为 unsigned long int。
否则,如果两个操作数中的任何一个的类型为 long int,则另一个操作数转换为类型 long int。
否则,如果两个操作数中的任何一个的类型为 unsigned int,则另一个操作数转换为类型 unsigned int。