This information describes how the z/OS® XL C/C++ compilers define some of the implementation-specific behavior from the ISO C and C++ standards. In-depth usage information is provided in z/OS XL C/C++ User's Guide and z/OS XL C/C++ Programming Guide.
The C++ compiler truncates external identifiers without C++ linkage after 8 characters if the NOLONGNAME compiler option or pragma is in effect.
Type | Amount of storage | Range (in limits.h) |
---|---|---|
signed short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
signed int | 4 bytes | -2,147,483,647 minus 1 to 2,147,483,647 |
unsigned int | 4 bytes | 0 to 4,294,967,295 |
signed long | 4 bytes | -2,147,483,647 minus 1 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
signed long long | 8 bytes | -9,223,372,036,854,775,807 minus 1 to 9,223,372,036,854,775,807 |
unsigned long long | 8 bytes | 0 to 18,446,744,073,709,551,615 |
Type | Amount of storage | Range (approximate) | |
---|---|---|---|
IBM® z/Architecture® hexadecimal format | IEEE binary format | ||
float | 4 bytes | 5.5x10-79 to 7.2x1075 | 1.2x10-38 to 3.4x1038 |
double | 8 bytes | 5.5x10-79 to 7.2x1075 | 2.2x10-308 to 1.8x10308 |
long double | 16 bytes | 5.5x10-79 to 7.2x1075 | 3.4x10-4932 to 1.2x104932 |
The following is the direction of truncation (or rounding) when you convert an integer number to an IBM z/Architecture hexadecimal floating-point number, or to an IEEE binary floating-point number:
When the floating-point cannot exactly represent the original value, the value is truncated.
When a floating-point number is converted to a narrower floating-point number, the floating-point number is truncated.
The rounding direction is determined by the ROUND compiler option. The ROUND option only affects the rounding of floating-point values that the z/OS XL C/C++ compiler can evaluate at compile time. It has no effect on rounding at run time.
For each external defined variable, the z/OS XL C/C++ compiler defines a writeable static data instance of the same name. The compiler places other external variables, such as those in programs that you compile with the NORENT compiler option, in separate csects that are based on their names.
Value of a single-character constant in a constant expression that controls conditional inclusion:
System-determined means that the limit is determined by your system resources.
Nesting levels of: | |
|
|
Number of pointer, array and function declarators
modifying an arithmetic a structure, a union, and incomplete type
declaration
|
|
Significant initial characters in:
|
|
Number of:
|
|
Note:
|