The following shows compiler specifications for the implementation-defined items which are not prescribed in the language specifications.
See Table 4.6. |
||
Values when integers are converted to shorter signed integer types or unsigned integers are converted to signed integer types of the same size (when converted values cannot be represented by the target type) |
When converting to a shorter type, the integer is masked with the number of bits of the shorter type (high-order bits are discarded) and the resultant bit sequence is used. When an unsigned integer is converted to a signed integer having the same length, the bit sequence is copied without change. |
|
For the shift operators, refer to no. 5 in this table. For the other operators, the integers are calculated as unsigned values (the value of each bit is handled as is). |
||
If the operand is negative, the result of the "%" operator takes the sign of the first operand (dividend) in the expression. |
||
Result of right shift of signed scalar types with a negative value |
If E1 of "E1 >> E2" is of a signed type and takes a negative value, an arithmetic shift is executed. |
When the -signed_char option is specified, the char type has the same value range as signed char type. |
When the int_to_short option is specified, the int type is handled as the short type, the signed int type as the signed short type, and the unsigned int type as the unsigned short type. |
There are three types of floating-point numbers: float, double, and long double types. See section "(5) Floating-Point Number Specifications" in "4.1.4 Internal Data Representation and Areas" for the internal representation of floating-point types and specifications for their conversion and operation. Table 4.8 shows the limits of floating-point type values that can be expressed. |
||
Method of truncation when integers are converted into floating-point numbers that cannot accurately represent the actual value |
Truncate to the nearest value if any of the following conditions is satisfied: |
|
Methods of truncation or rounding when floating-point numbers are converted into shorter floating-point types |
The limits for decimal notation are the maximum value smaller than infinity and the minimum value greater than 0. Values in parentheses are theoretical values. |
These values are the limits when dbl_size=8 is specified. When dbl_size=4 is specified, the double type and long double type have the same value as the float type. |
Optimizes for the fastest possible access regardless of whether there is a storage-class specifier "register" declaration. |
Referencing members in union type accessed by members of different types |
When a member of a union object is accessed using a member of a different type, the internal representation of the data will be of the type of the access. |
|
The maximum alignment value of the class and structure members is used as the boundary alignment value. For details on assignment, see section "(2) Compound Type (C), Class Type (C++)" in "4.1.4 Internal Data Representation and Areas". |
||
A bit field declared without indication of signed or unsigned is handled as an unsigned bit field. |
||
The bit field that is declared first is assigned from the least significant bit in the area of the type that is specified in the bit field declaration. Note that this order can be changed through option settings.*1 |
||
Method of assignment when the size of a bit field assigned after a bit field is assigned within an int type size exceeds the remaining size in the int type |
||
signed char, unsigned char, bool, _Bool, short, unsigned short, int, unsigned int, long, unsigned long, enum, long long, unsigned long long, wchar_t |
||
The internal representation of an enumeration type is the same as that of the signed long type. The leftmost bit of the area is the sign bit. When the auto_enum option is specified, the smallest type that can hold the enumeration values is used. |
For details of assignment of bit fields, see section4.1.4 Internal Data Representation and Areas. |
The following shows examples of counting the number of types modifying basic types.
i. int a; Here, a has an int type (basic type) and the number of types modifying the basic type is 0.
ii. char *f(); Here, f has a function type returning a pointer type to a char type (basic type), and the number of types modifying the basic type is 2.
The diagnostic printed by and the termination behavior of the assert function |
The message depends on the lang option setting at compilation. (1) When -lang=c99 is not specified (C (C89), C++, or EC++ language): ASSERTION FAILED:expressionFILE<file name>,LINE<line number> (2) When -lang=c99 is specified (C (C99) language): ASSERTION FAILED:expressionFILE<file name>,LINE<line number>FUNCNAME<function name> The operation when the assert function execution is completed is not specified; it depends on the specifications of the low-level interface routine. |
|
The character set inspected by the isalnum, isalpha, iscntrl, islower, isprint, and isupper functions |
Character set represented by the unsigned char type (0 to 255) and EOF (-1). Table 7.7 shows the character set that results in a true return value. |
|
Value returned by a mathematical function if an input argument is out of the range |
A not-a-number is returned. For details on the format of not-a-numbers, refer to section "(5) Floating-Point Number Specifications" in "4.1.4 Internal Data Representation and Areas". |
|
Whether errno is set to the value of macro ERANGE if an underflow error occurs in a mathematical function |
For the functions that set errno to the value of ERANGE, see "10.5.6 Standard Library Error Messages". The other functions do not set errno to ERANGE. |
|
Whether a range error occurs if the second argument in the fmod function is 0 |
For details of the return value from fmod, see "fmod/fmodf/fmodl" in "7.4.7 <math.h>". |
|
The semantics for each signal recognized by the signal function |
||
The default handling and the handling at program startup for each signal recognized by the signal function |
||
If the equivalent of signal(sig, SIG_DFL); is not executed prior to the call of a signal handler, the blocking of the signal that is performed |
||
Whether the default handling is reset if the SIGILL signal is received by a handler specified to the signal function |
||
Whether the last line of the input text requires a new-line character indicating the end |
Not specified. Depends on the low-level interface routine specifications. |
|
Whether the space characters written immediately before the new-line character are read |
Not specified. Depends on the low-level interface routine specifications. |
|
Number of null characters added to data written in the binary file |
Not specified. Depends on the low-level interface routine specifications. |
|
Not specified. Depends on the low-level interface routine specifications. |
||
Not specified. Depends on the low-level interface routine specifications. |
||
Not specified. Depends on the low-level interface routine specifications. |
||
Not specified. Depends on the low-level interface routine specifications. |
||
Not specified. Depends on the low-level interface routine specifications. |
||
Not specified. Depends on the low-level interface routine specifications. |
||
The effect if a file with the new name exists prior to a call to the rename function |
||
Output data representation of the %p format conversion in the fprintf function |
||
Input data representation of the %p format conversion in the fscanf function |
||
The meaning of conversion specifier '-' in the fscanf function |
If '-' is not the first or last character or '-' does not follow '^', the range from the previous character to the following character is indicated. |
|
The fgetpos function is not supported. The errno value for the ftell function is not specified. It depends on the low-level interface routine specifications. |
||
calloc, malloc, or realloc function operation when the size is 0. |
||
The behavior of the abort function with regard to open and temporary files |
The behavior is not specified; it depends on the specifications of the low-level interface routine. |
|
The status returned by the exit function if the value of the argument is other than zero, EXIT_SUCCESS, or EXIT_FAILURE |
||
The set of environment names and the method for altering the environment list used by the getenv function |
||
The contents and mode of execution of the string by the system function |
||
The contents of the error message strings returned by the strerror function |
According to the implementation-defined relationship, the error number errnum is converted to a character string. errnum has the value copied from the global variable errno in most cases. For details, see "10.5.6 Standard Library Error Messages". |
|