使用 -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。