You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

According to Section 1 of Annex J of [ISO/IEC 9899:1999], the behavior a program is unspecified in the circumstances outlined the table below. The "Practice" column in the table identifies the coding practice(s) that address the specific case of unspecified behavior (USB).

USB

Description

Practice

1

The manner and timing of static initialization.

 

2

The termination status returned to the hosted environment if the return type of main is not compatible with int.

 

3

The behavior of the display device if a printing character is written when the active position is at the final position of a line.

 

4

The behavior of the display device if a backspace character is written when the active position is at the initial position of a line.

 

5

The behavior of the display device if a horizontal tab character is written when the active position is at or past the last defined horizontal tabulation position.

 

6

The behavior of the display device if a vertical tab character is written when the active position is at or past the last defined vertical tabulation position.

 

7

How an extended source character that does not correspond to a universal character name counts toward the significant initial characters in an external identifier.

 

8

Many aspects of the representations of types.

 

9

The value of padding bytes when storing values in structures or unions.

EXP04-C

10

The value of a union member other than the last one stored into.

 

11

The representation used when storing a value in an object that has more than one object representation for that value.

 

12

The values of any padding bits in integer representations.

 

13

Whether certain operators can generate negative zeros and whether a negative zero becomes a normal zero when stored in an object.

 

14

Whether two string literals result in distinct arrays.

 

15

The order in which subexpressions are evaluated and the order in which side effects take place, except as specified for the function-call (), &&, ||, ?:, and comma operators.

EXP30-C

16

The order in which the function designator, arguments, and subexpressions within the arguments are evaluated in a function call.

 

17

The order of side effects among compound literal initialization list expressions.

 

18

The order in which the operands of an assignment operator are evaluated.

 

19

The alignment of the addressable storage unit allocated to hold a bit-field.

 

20

Whether a call to an inline function uses the inline definition or the external definition of the function.

 

21

Whether or not a size expression is evaluated when it is part of the operand of a sizeof operator and changing the value of the size expression would not affect the result of the operator.

EXP06-C

22

The order in which any side effects occur among the initialization list expressions in an initializer.

 

23

The layout of storage for function parameters.

 

24

When a fully expanded macro replacement list contains a function-like macro name as its last preprocessing token and the next preprocessing token from the source file is a (, and the fully expanded replacement of that macro ends with the name of the first macro and the next preprocessing token from the source file is again a (, whether that is considered a nested replacement.

 

25

The order in which # and ## operations are evaluated during macro substitution.

 

26

Whether errno is a macro or an identifier with external linkage.

DCL37-C

27

The state of the floating-point status flags when execution passes from a part of the program translated with FENV_ACCESS "off" to a part translated with FENV_ACCESS "on".

 

28

The order in which feraiseexcept raises floating-point exceptions, except as stated in F.7.6.

 

29

Whether math_errhandling is a macro or an identifier with external linkage.

DCL37-C

30

The results of the frexp functions when the specified value is not a floating-point number.

 

31

The result of rounding when the value is out of range.

 

32

Whether setjmp is a macro or an identifier with external linkage.

DCL37-C

33

Whether va_copy and va_end are macros or identifiers with external linkage.

DCL37-C

34

The hexadecimal digit before the decimal point when a non-normalized floating-point number is printed with an a or A conversion specifier.

 

35

The value of the file position indicator after a successful call to the ungetc function for a text stream, or the ungetwc function for any stream, until all pushed-back characters are read or discarded.

 

36

The details of the value stored by the fgetpos function.

 

37

The details of the value returned by the ftell function for a text stream.

 

38

Whether the strtod, strtof, strtold, wcstod, wcstof, and wcstold functions convert a minus-signed sequence to a negative number directly or by negating the value resulting from converting the corresponding unsigned sequence.

 

39

The order and contiguity of storage allocated by successive calls to the calloc, malloc, and realloc functions.

 

40

The amount of storage allocated by a successful call to the calloc, malloc, and realloc function when 0 bytes was requested.

MEM04-C

41

Which of two elements that compare as equal is matched by the bsearch function.

 

42

The order of two elements that compare as equal in an array sorted by the qsort function.

 

43

The encoding of the calendar time returned by the time function.

MSC05-C

44

The characters stored by the strftime or wcsftime function if any of the time values being converted is outside the normal range.

 

45

The conversion state after an encoding error occurs.

 

46

The resulting value when the "invalid" floating-point exception is raised during IEC 60559 floating to integer conversion.

 

47

Whether conversion of non-integer IEC 60559 floating values to integer raises the "inexact" floating-point exception.

 

48

The exponent value stored by frexp for a NaN or infinity.

 

49

The numeric result returned by the lrint, llrint, lround, and llround functions if the rounded value is outside the range of the return type.

 

50

The sign of one part of the complex result of several math functions for certain exceptional values in IEC 60559 compatible implementations.

 

  • No labels