Skip Navigation Links | |
Exit Print View | |
![]() |
Oracle Solaris Studio 12.3: C User's Guide Oracle Solaris Studio 12.3 Information Library |
1. Introduction to the C Compiler
2. C-Compiler Implementation-Specific Information
2.3 Thread Local Storage Specifier
2.4 Floating Point, Nonstandard Mode
2.7 Case Ranges in Switch Statements
2.11.3 does_not_read_global_data
2.11.5 does_not_write_global_data
2.11.26 warn_missing_parameter_info
2.13 Preserving the Value of errno
2.14.3 __inline and __inline__
2.14.5 __FUNCTION__ and __PRETTY_FUNCTION__
2.16 How to Specify Include Files
2.16.1 Using the -I- Option to Change the Search Algorithm
2.17 Compiling in Free-Standing Environments
2.18 Compiler Support for Intel MMX and Extended x86 Platform Intrinsics
7. Converting Applications for a 64-Bit Environment
8. cscope: Interactively Examining a C Program
A. Compiler Options Grouped by Functionality
B. C Compiler Options Reference
C. Implementation-Defined ISO/IEC C99 Behavior
E. Implementation-Defined ISO/IEC C90 Behavior
H. Oracle Solaris Studio C: Differences Between K&R C and ISO C
When you compile with -xc99=none, the Oracle Solaris Studio C compiler includes the data types long long and unsigned long long, which are similar to the data type long. The long long data type stores 64 bits of information; long stores 32 bits of information when compiling with -m32. The long data type stores 64 bits when compiling with -m64. The long long data type is not available in -Xc mode (a warning is issued).
To print or scan long long data types, prefix the conversion specifier with the letters ll. For example, to print llvar, a variable of long long data type, in signed decimal format, use:
printf("%lld\n", llvar);
Some binary operators convert the types of their operands to yield a common type, which is also the type of the result. These operators are the usual arithmetic conversions:
If either operand is type long double, the other operand is converted to long double.
Otherwise, if either operand has type double, the other operand is converted to double.
Otherwise, if either operand has type float, the other operand is converted to float.
Otherwise, the integral promotions are performed on both operands. Then, these rules are applied:
If either operand has type unsigned long long int, the other operator is converted to unsigned long long int.
If either operand has type long long int, the other operator is converted to long long int.
If either operand has type unsigned long int, the other operand is converted to unsigned long int.
Otherwise, when you compile on 64–bit SPARC (-m64) only and specify cc -xc99=none, if one operand has type long int and the other has type unsigned int, both operands are converted to unsigned long int.
Otherwise, if either operand has type long int, the other operand is converted to long int.
Otherwise, if either operand has type unsigned int, the other operand is converted to unsigned int.