-<a name="Contents" href="#Contents"><h2>Contents</h2></a>
-<pre>
-Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
-Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
-1. Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
-2. Normative references . . . . . . . . . . . . . . . . . . . . . . . 2
-3. Terms, definitions, and symbols . . . . . . . . . . . . . . . . . . . 3
-4. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . 7
-5. Environment . . . . . . . . . . . . . . . . . . . . . . . . . . 9
- 5.1 Conceptual models . . . . . . . . . . . . . . . . . . . . . 9
- 5.1.1 Translation environment . . . . . . . . . . . . . . . . 9
- 5.1.2 Execution environments . . . . . . . . . . . . . . . . 11
- 5.2 Environmental considerations . . . . . . . . . . . . . . . . . 17
- 5.2.1 Character sets . . . . . . . . . . . . . . . . . . . . 17
- 5.2.2 Character display semantics . . . . . . . . . . . . . . 19
- 5.2.3 Signals and interrupts . . . . . . . . . . . . . . . . . 20
- 5.2.4 Environmental limits . . . . . . . . . . . . . . . . . 20
-6. Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
- 6.1 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 29
- 6.2 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . 29
- 6.2.1 Scopes of identifiers . . . . . . . . . . . . . . . . . 29
- 6.2.2 Linkages of identifiers . . . . . . . . . . . . . . . . . 30
- 6.2.3 Name spaces of identifiers . . . . . . . . . . . . . . . 31
- 6.2.4 Storage durations of objects . . . . . . . . . . . . . . 32
- 6.2.5 Types . . . . . . . . . . . . . . . . . . . . . . . 33
- 6.2.6 Representations of types . . . . . . . . . . . . . . . . 37
- 6.2.7 Compatible type and composite type . . . . . . . . . . . 40
- 6.3 Conversions . . . . . . . . . . . . . . . . . . . . . . . . 42
- 6.3.1 Arithmetic operands . . . . . . . . . . . . . . . . . 42
- 6.3.2 Other operands . . . . . . . . . . . . . . . . . . . 46
- 6.4 Lexical elements . . . . . . . . . . . . . . . . . . . . . . 49
- 6.4.1 Keywords . . . . . . . . . . . . . . . . . . . . . . 50
- 6.4.2 Identifiers . . . . . . . . . . . . . . . . . . . . . . 51
- 6.4.3 Universal character names . . . . . . . . . . . . . . . 53
- 6.4.4 Constants . . . . . . . . . . . . . . . . . . . . . . 54
- 6.4.5 String literals . . . . . . . . . . . . . . . . . . . . 62
- 6.4.6 Punctuators . . . . . . . . . . . . . . . . . . . . . 63
- 6.4.7 Header names . . . . . . . . . . . . . . . . . . . . 64
- 6.4.8 Preprocessing numbers . . . . . . . . . . . . . . . . 65
- 6.4.9 Comments . . . . . . . . . . . . . . . . . . . . . 66
- 6.5 Expressions . . . . . . . . . . . . . . . . . . . . . . . . 67
-<!--page 2 indent -1-->
- 6.5.1 Primary expressions . . . . . . . . . . . . . . . . . 69
- 6.5.2 Postfix operators . . . . . . . . . . . . . . . . . . . 69
- 6.5.3 Unary operators . . . . . . . . . . . . . . . . . . . 78
- 6.5.4 Cast operators . . . . . . . . . . . . . . . . . . . . 81
- 6.5.5 Multiplicative operators . . . . . . . . . . . . . . . . 82
- 6.5.6 Additive operators . . . . . . . . . . . . . . . . . . 82
- 6.5.7 Bitwise shift operators . . . . . . . . . . . . . . . . . 84
- 6.5.8 Relational operators . . . . . . . . . . . . . . . . . . 85
- 6.5.9 Equality operators . . . . . . . . . . . . . . . . . . 86
- 6.5.10 Bitwise AND operator . . . . . . . . . . . . . . . . . 87
- 6.5.11 Bitwise exclusive OR operator . . . . . . . . . . . . . 88
- 6.5.12 Bitwise inclusive OR operator . . . . . . . . . . . . . . 88
- 6.5.13 Logical AND operator . . . . . . . . . . . . . . . . . 89
- 6.5.14 Logical OR operator . . . . . . . . . . . . . . . . . 89
- 6.5.15 Conditional operator . . . . . . . . . . . . . . . . . 90
- 6.5.16 Assignment operators . . . . . . . . . . . . . . . . . 91
- 6.5.17 Comma operator . . . . . . . . . . . . . . . . . . . 94
- 6.6 Constant expressions . . . . . . . . . . . . . . . . . . . . . 95
- 6.7 Declarations . . . . . . . . . . . . . . . . . . . . . . . . 97
- 6.7.1 Storage-class specifiers . . . . . . . . . . . . . . . . 98
- 6.7.2 Type specifiers . . . . . . . . . . . . . . . . . . . . 99
- 6.7.3 Type qualifiers . . . . . . . . . . . . . . . . . . . . 108
- 6.7.4 Function specifiers . . . . . . . . . . . . . . . . . . 112
- 6.7.5 Declarators . . . . . . . . . . . . . . . . . . . . . 114
- 6.7.6 Type names . . . . . . . . . . . . . . . . . . . . . 122
- 6.7.7 Type definitions . . . . . . . . . . . . . . . . . . . 123
- 6.7.8 Initialization . . . . . . . . . . . . . . . . . . . . 125
- 6.8 Statements and blocks . . . . . . . . . . . . . . . . . . . . 131
- 6.8.1 Labeled statements . . . . . . . . . . . . . . . . . . 131
- 6.8.2 Compound statement . . . . . . . . . . . . . . . . . 132
- 6.8.3 Expression and null statements . . . . . . . . . . . . . 132
- 6.8.4 Selection statements . . . . . . . . . . . . . . . . . 133
- 6.8.5 Iteration statements . . . . . . . . . . . . . . . . . . 135
- 6.8.6 Jump statements . . . . . . . . . . . . . . . . . . . 136
- 6.9 External definitions . . . . . . . . . . . . . . . . . . . . . 140
- 6.9.1 Function definitions . . . . . . . . . . . . . . . . . . 141
- 6.9.2 External object definitions . . . . . . . . . . . . . . . 143
- 6.10 Preprocessing directives . . . . . . . . . . . . . . . . . . . 145
- 6.10.1 Conditional inclusion . . . . . . . . . . . . . . . . . 147
- 6.10.2 Source file inclusion . . . . . . . . . . . . . . . . . 149
- 6.10.3 Macro replacement . . . . . . . . . . . . . . . . . . 151
- 6.10.4 Line control . . . . . . . . . . . . . . . . . . . . . 158
- 6.10.5 Error directive . . . . . . . . . . . . . . . . . . . . 159
- 6.10.6 Pragma directive . . . . . . . . . . . . . . . . . . . 159
-<!--page 3 indent 0-->
- 6.10.7 Null directive . . . . . . . . . . . . . . . . . . . . 160
- 6.10.8 Predefined macro names . . . . . . . . . . . . . . . . 160
- 6.10.9 Pragma operator . . . . . . . . . . . . . . . . . . . 161
- 6.11 Future language directions . . . . . . . . . . . . . . . . . . 163
- 6.11.1 Floating types . . . . . . . . . . . . . . . . . . . . 163
- 6.11.2 Linkages of identifiers . . . . . . . . . . . . . . . . . 163
- 6.11.3 External names . . . . . . . . . . . . . . . . . . . 163
- 6.11.4 Character escape sequences . . . . . . . . . . . . . . 163
- 6.11.5 Storage-class specifiers . . . . . . . . . . . . . . . . 163
- 6.11.6 Function declarators . . . . . . . . . . . . . . . . . 163
- 6.11.7 Function definitions . . . . . . . . . . . . . . . . . . 163
- 6.11.8 Pragma directives . . . . . . . . . . . . . . . . . . 163
- 6.11.9 Predefined macro names . . . . . . . . . . . . . . . . 163
-7. Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
- 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 164
- 7.1.1 Definitions of terms . . . . . . . . . . . . . . . . . . 164
- 7.1.2 Standard headers . . . . . . . . . . . . . . . . . . . 165
- 7.1.3 Reserved identifiers . . . . . . . . . . . . . . . . . . 166
- 7.1.4 Use of library functions . . . . . . . . . . . . . . . . 166
- 7.2 Diagnostics <assert.h> . . . . . . . . . . . . . . . . . . 169
- 7.2.1 Program diagnostics . . . . . . . . . . . . . . . . . 169
- 7.3 Complex arithmetic <complex.h> . . . . . . . . . . . . . . 170
- 7.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . 170
- 7.3.2 Conventions . . . . . . . . . . . . . . . . . . . . . 171
- 7.3.3 Branch cuts . . . . . . . . . . . . . . . . . . . . . 171
- 7.3.4 The CX_LIMITED_RANGE pragma . . . . . . . . . . . 171
- 7.3.5 Trigonometric functions . . . . . . . . . . . . . . . . 172
- 7.3.6 Hyperbolic functions . . . . . . . . . . . . . . . . . 174
- 7.3.7 Exponential and logarithmic functions . . . . . . . . . . 176
- 7.3.8 Power and absolute-value functions . . . . . . . . . . . 177
- 7.3.9 Manipulation functions . . . . . . . . . . . . . . . . 178
- 7.4 Character handling <ctype.h> . . . . . . . . . . . . . . . . 181
- 7.4.1 Character classification functions . . . . . . . . . . . . 181
- 7.4.2 Character case mapping functions . . . . . . . . . . . . 184
- 7.5 Errors <errno.h> . . . . . . . . . . . . . . . . . . . . . 186
- 7.6 Floating-point environment <fenv.h> . . . . . . . . . . . . . 187
- 7.6.1 The FENV_ACCESS pragma . . . . . . . . . . . . . . 189
- 7.6.2 Floating-point exceptions . . . . . . . . . . . . . . . 190
- 7.6.3 Rounding . . . . . . . . . . . . . . . . . . . . . . 193
- 7.6.4 Environment . . . . . . . . . . . . . . . . . . . . 194
- 7.7 Characteristics of floating types <float.h> . . . . . . . . . . . 197
- 7.8 Format conversion of integer types <inttypes.h> . . . . . . . . 198
- 7.8.1 Macros for format specifiers . . . . . . . . . . . . . . 198
- 7.8.2 Functions for greatest-width integer types . . . . . . . . . 199
-<!--page 4 indent -1-->
- 7.9 Alternative spellings <iso646.h> . . . . . . . . . . . . . . . 202
- 7.10 Sizes of integer types <limits.h> . . . . . . . . . . . . . . 203
- 7.11 Localization <locale.h> . . . . . . . . . . . . . . . . . . 204
- 7.11.1 Locale control . . . . . . . . . . . . . . . . . . . . 205
- 7.11.2 Numeric formatting convention inquiry . . . . . . . . . . 206
- 7.12 Mathematics <math.h> . . . . . . . . . . . . . . . . . . . 212
- 7.12.1 Treatment of error conditions . . . . . . . . . . . . . . 214
- 7.12.2 The FP_CONTRACT pragma . . . . . . . . . . . . . . 215
- 7.12.3 Classification macros . . . . . . . . . . . . . . . . . 216
- 7.12.4 Trigonometric functions . . . . . . . . . . . . . . . . 218
- 7.12.5 Hyperbolic functions . . . . . . . . . . . . . . . . . 221
- 7.12.6 Exponential and logarithmic functions . . . . . . . . . . 223
- 7.12.7 Power and absolute-value functions . . . . . . . . . . . 228
- 7.12.8 Error and gamma functions . . . . . . . . . . . . . . . 230
- 7.12.9 Nearest integer functions . . . . . . . . . . . . . . . . 231
- 7.12.10 Remainder functions . . . . . . . . . . . . . . . . . 235
- 7.12.11 Manipulation functions . . . . . . . . . . . . . . . . 236
- 7.12.12 Maximum, minimum, and positive difference functions . . . 238
- 7.12.13 Floating multiply-add . . . . . . . . . . . . . . . . . 239
- 7.12.14 Comparison macros . . . . . . . . . . . . . . . . . . 240
- 7.13 Nonlocal jumps <setjmp.h> . . . . . . . . . . . . . . . . 243
- 7.13.1 Save calling environment . . . . . . . . . . . . . . . 243
- 7.13.2 Restore calling environment . . . . . . . . . . . . . . 244
- 7.14 Signal handling <signal.h> . . . . . . . . . . . . . . . . . 246
- 7.14.1 Specify signal handling . . . . . . . . . . . . . . . . 247
- 7.14.2 Send signal . . . . . . . . . . . . . . . . . . . . . 248
- 7.15 Variable arguments <stdarg.h> . . . . . . . . . . . . . . . 249
- 7.15.1 Variable argument list access macros . . . . . . . . . . . 249
- 7.16 Boolean type and values <stdbool.h> . . . . . . . . . . . . 253
- 7.17 Common definitions <stddef.h> . . . . . . . . . . . . . . . 254
- 7.18 Integer types <stdint.h> . . . . . . . . . . . . . . . . . . 255
- 7.18.1 Integer types . . . . . . . . . . . . . . . . . . . . 255
- 7.18.2 Limits of specified-width integer types . . . . . . . . . . 257
- 7.18.3 Limits of other integer types . . . . . . . . . . . . . . 259
- 7.18.4 Macros for integer constants . . . . . . . . . . . . . . 260
- 7.19 Input/output <stdio.h> . . . . . . . . . . . . . . . . . . 262
- 7.19.1 Introduction . . . . . . . . . . . . . . . . . . . . . 262
- 7.19.2 Streams . . . . . . . . . . . . . . . . . . . . . . 264
- 7.19.3 Files . . . . . . . . . . . . . . . . . . . . . . . . 266
- 7.19.4 Operations on files . . . . . . . . . . . . . . . . . . 268
- 7.19.5 File access functions . . . . . . . . . . . . . . . . . 270
- 7.19.6 Formatted input/output functions . . . . . . . . . . . . 274
- 7.19.7 Character input/output functions . . . . . . . . . . . . . 296
- 7.19.8 Direct input/output functions . . . . . . . . . . . . . . 301
-<!--page 5 indent -1-->
- 7.19.9 File positioning functions . . . . . . . . . . . . . . . 302
- 7.19.10 Error-handling functions . . . . . . . . . . . . . . . . 304
- 7.20 General utilities <stdlib.h> . . . . . . . . . . . . . . . . 306
- 7.20.1 Numeric conversion functions . . . . . . . . . . . . . . 307
- 7.20.2 Pseudo-random sequence generation functions . . . . . . . 312
- 7.20.3 Memory management functions . . . . . . . . . . . . . 313
- 7.20.4 Communication with the environment . . . . . . . . . . 315
- 7.20.5 Searching and sorting utilities . . . . . . . . . . . . . . 318
- 7.20.6 Integer arithmetic functions . . . . . . . . . . . . . . 320
- 7.20.7 Multibyte/wide character conversion functions . . . . . . . 321
- 7.20.8 Multibyte/wide string conversion functions . . . . . . . . 323
- 7.21 String handling <string.h> . . . . . . . . . . . . . . . . . 325
- 7.21.1 String function conventions . . . . . . . . . . . . . . . 325
- 7.21.2 Copying functions . . . . . . . . . . . . . . . . . . 325
- 7.21.3 Concatenation functions . . . . . . . . . . . . . . . . 327
- 7.21.4 Comparison functions . . . . . . . . . . . . . . . . . 328
- 7.21.5 Search functions . . . . . . . . . . . . . . . . . . . 330
- 7.21.6 Miscellaneous functions . . . . . . . . . . . . . . . . 333
- 7.22 Type-generic math <tgmath.h> . . . . . . . . . . . . . . . 335
- 7.23 Date and time <time.h> . . . . . . . . . . . . . . . . . . 338
- 7.23.1 Components of time . . . . . . . . . . . . . . . . . 338
- 7.23.2 Time manipulation functions . . . . . . . . . . . . . . 339
- 7.23.3 Time conversion functions . . . . . . . . . . . . . . . 341
- 7.24 Extended multibyte and wide character utilities <wchar.h> . . . . . 348
- 7.24.1 Introduction . . . . . . . . . . . . . . . . . . . . . 348
- 7.24.2 Formatted wide character input/output functions . . . . . . 349
- 7.24.3 Wide character input/output functions . . . . . . . . . . 367
- 7.24.4 General wide string utilities . . . . . . . . . . . . . . 371
- 7.24.5 Wide character time conversion functions . . . . . . . . . 385
- 7.24.6 Extended multibyte/wide character conversion utilities . . . . 386
- 7.25 Wide character classification and mapping utilities <wctype.h> . . . 393
- 7.25.1 Introduction . . . . . . . . . . . . . . . . . . . . . 393
- 7.25.2 Wide character classification utilities . . . . . . . . . . . 394
- 7.25.3 Wide character case mapping utilities . . . . . . . . . . . 399
- 7.26 Future library directions . . . . . . . . . . . . . . . . . . . 401
- 7.26.1 Complex arithmetic <complex.h> . . . . . . . . . . . 401
- 7.26.2 Character handling <ctype.h> . . . . . . . . . . . . 401
- 7.26.3 Errors <errno.h> . . . . . . . . . . . . . . . . . 401
- 7.26.4 Format conversion of integer types <inttypes.h> . . . . 401
- 7.26.5 Localization <locale.h> . . . . . . . . . . . . . . 401
- 7.26.6 Signal handling <signal.h> . . . . . . . . . . . . . 401
- 7.26.7 Boolean type and values <stdbool.h> . . . . . . . . . 401
- 7.26.8 Integer types <stdint.h> . . . . . . . . . . . . . . 401
- 7.26.9 Input/output <stdio.h> . . . . . . . . . . . . . . . 402
-<!--page 6 indent 0-->
- 7.26.10 General utilities <stdlib.h> . . . . . . . . . . . . . 402
- 7.26.11 String handling <string.h> . . . . . . . . . . . . . 402
- 7.26.12 Extended multibyte and wide character utilities
- <wchar.h> . . . . . . . . . . . . . . . . . . . . 402
- 7.26.13 Wide character classification and mapping utilities
- <wctype.h> . . . . . . . . . . . . . . . . . . . . 402
-Annex A (informative) Language syntax summary . . . . . . . . . . . . 403
- A.1 Lexical grammar . . . . . . . . . . . . . . . . . . . . . . 403
- A.2 Phrase structure grammar . . . . . . . . . . . . . . . . . . . 409
- A.3 Preprocessing directives . . . . . . . . . . . . . . . . . . . 416
-Annex B (informative) Library summary . . . . . . . . . . . . . . . . 419
- B.1 Diagnostics <assert.h> . . . . . . . . . . . . . . . . . . 419
- B.2 Complex <complex.h> . . . . . . . . . . . . . . . . . . . 419
- B.3 Character handling <ctype.h> . . . . . . . . . . . . . . . . 421
- B.4 Errors <errno.h> . . . . . . . . . . . . . . . . . . . . . 421
- B.5 Floating-point environment <fenv.h> . . . . . . . . . . . . . 421
- B.6 Characteristics of floating types <float.h> . . . . . . . . . . . 422
- B.7 Format conversion of integer types <inttypes.h> . . . . . . . . 422
- B.8 Alternative spellings <iso646.h> . . . . . . . . . . . . . . . 423
- B.9 Sizes of integer types <limits.h> . . . . . . . . . . . . . . 423
- B.10 Localization <locale.h> . . . . . . . . . . . . . . . . . . 423
- B.11 Mathematics <math.h> . . . . . . . . . . . . . . . . . . . 423
- B.12 Nonlocal jumps <setjmp.h> . . . . . . . . . . . . . . . . 428
- B.13 Signal handling <signal.h> . . . . . . . . . . . . . . . . . 428
- B.14 Variable arguments <stdarg.h> . . . . . . . . . . . . . . . 428
- B.15 Boolean type and values <stdbool.h> . . . . . . . . . . . . 428
- B.16 Common definitions <stddef.h> . . . . . . . . . . . . . . . 429
- B.17 Integer types <stdint.h> . . . . . . . . . . . . . . . . . . 429
- B.18 Input/output <stdio.h> . . . . . . . . . . . . . . . . . . 429
- B.19 General utilities <stdlib.h> . . . . . . . . . . . . . . . . 431
- B.20 String handling <string.h> . . . . . . . . . . . . . . . . . 433
- B.21 Type-generic math <tgmath.h> . . . . . . . . . . . . . . . 434
- B.22 Date and time <time.h> . . . . . . . . . . . . . . . . . . 434
- B.23 Extended multibyte/wide character utilities <wchar.h> . . . . . . 435
- B.24 Wide character classification and mapping utilities <wctype.h> . . . 437
-Annex C (informative) Sequence points . . . . . . . . . . . . . . . . . 439
-Annex D (normative) Universal character names for identifiers . . . . . . . 440
-Annex E (informative) Implementation limits . . . . . . . . . . . . . . 442
-Annex F (normative) IEC 60559 floating-point arithmetic . . . . . . . . . . 444
- F.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 444
- F.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
- F.3 Operators and functions . . . . . . . . . . . . . . . . . . . 445
-<!--page 7 indent 0-->
- F.4 Floating to integer conversion . . . . . . . . . . . . . . . . . 447
- F.5 Binary-decimal conversion . . . . . . . . . . . . . . . . . . 447
- F.6 Contracted expressions . . . . . . . . . . . . . . . . . . . . 448
- F.7 Floating-point environment . . . . . . . . . . . . . . . . . . 448
- F.8 Optimization . . . . . . . . . . . . . . . . . . . . . . . . 451
- F.9 Mathematics <math.h> . . . . . . . . . . . . . . . . . . . 454
-Annex G (informative) IEC 60559-compatible complex arithmetic . . . . . . 467
- G.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 467
- G.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
- G.3 Conventions . . . . . . . . . . . . . . . . . . . . . . . . 467
- G.4 Conversions . . . . . . . . . . . . . . . . . . . . . . . . 468
- G.5 Binary operators . . . . . . . . . . . . . . . . . . . . . . 468
- G.6 Complex arithmetic <complex.h> . . . . . . . . . . . . . . 472
- G.7 Type-generic math <tgmath.h> . . . . . . . . . . . . . . . 480
-Annex H (informative) Language independent arithmetic . . . . . . . . . . 481
- H.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . 481
- H.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
- H.3 Notification . . . . . . . . . . . . . . . . . . . . . . . . 485
-Annex I (informative) Common warnings . . . . . . . . . . . . . . . . 487
-Annex J (informative) Portability issues . . . . . . . . . . . . . . . . . 489
- J.1 Unspecified behavior . . . . . . . . . . . . . . . . . . . . . 489
- J.2 Undefined behavior . . . . . . . . . . . . . . . . . . . . . 492
- J.3 Implementation-defined behavior . . . . . . . . . . . . . . . . 505
- J.4 Locale-specific behavior . . . . . . . . . . . . . . . . . . . 512
- J.5 Common extensions . . . . . . . . . . . . . . . . . . . . . 513
-Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . 516
-Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
-<!--page 8 indent 0-->
-<!--page 9 indent 4-->
-</pre>
-
-<a name="Foreword" href="#Foreword"><h2>Foreword</h2></a>
-<p><!--para 1-->
+<h2><a name="Contents" href="#Contents">Contents</a></h2>
+<ul>
+<li><a href="#Foreword">Foreword</a>
+<li><a href="#Introduction">Introduction</a>
+<li><a href="#1">1. Scope</a>
+<li><a href="#2">2. Normative references</a>
+<li><a href="#3">3. Terms, definitions, and symbols</a>
+<li><a href="#4">4. Conformance</a>
+<li><a href="#5">5. Environment</a>
+<ul>
+<li><a href="#5.1"> 5.1 Conceptual models</a>
+<ul>
+<li><a href="#5.1.1"> 5.1.1 Translation environment</a>
+<li><a href="#5.1.2"> 5.1.2 Execution environments</a>
+</ul>
+<li><a href="#5.2"> 5.2 Environmental considerations</a>
+<ul>
+<li><a href="#5.2.1"> 5.2.1 Character sets</a>
+<li><a href="#5.2.2"> 5.2.2 Character display semantics</a>
+<li><a href="#5.2.3"> 5.2.3 Signals and interrupts</a>
+<li><a href="#5.2.4"> 5.2.4 Environmental limits</a>
+</ul>
+</ul>
+<li><a href="#6">6. Language</a>
+<ul>
+<li><a href="#6.1"> 6.1 Notation</a>
+<li><a href="#6.2"> 6.2 Concepts</a>
+<ul>
+<li><a href="#6.2.1"> 6.2.1 Scopes of identifiers</a>
+<li><a href="#6.2.2"> 6.2.2 Linkages of identifiers</a>
+<li><a href="#6.2.3"> 6.2.3 Name spaces of identifiers</a>
+<li><a href="#6.2.4"> 6.2.4 Storage durations of objects</a>
+<li><a href="#6.2.5"> 6.2.5 Types</a>
+<li><a href="#6.2.6"> 6.2.6 Representations of types</a>
+<li><a href="#6.2.7"> 6.2.7 Compatible type and composite type</a>
+</ul>
+<li><a href="#6.3"> 6.3 Conversions</a>
+<ul>
+<li><a href="#6.3.1"> 6.3.1 Arithmetic operands</a>
+<li><a href="#6.3.2"> 6.3.2 Other operands</a>
+</ul>
+<li><a href="#6.4"> 6.4 Lexical elements</a>
+<ul>
+<li><a href="#6.4.1"> 6.4.1 Keywords</a>
+<li><a href="#6.4.2"> 6.4.2 Identifiers</a>
+<li><a href="#6.4.3"> 6.4.3 Universal character names</a>
+<li><a href="#6.4.4"> 6.4.4 Constants</a>
+<li><a href="#6.4.5"> 6.4.5 String literals</a>
+<li><a href="#6.4.6"> 6.4.6 Punctuators</a>
+<li><a href="#6.4.7"> 6.4.7 Header names</a>
+<li><a href="#6.4.8"> 6.4.8 Preprocessing numbers</a>
+<li><a href="#6.4.9"> 6.4.9 Comments</a>
+</ul>
+<li><a href="#6.5"> 6.5 Expressions</a>
+<!--page 2 -->
+<ul>
+<li><a href="#6.5.1"> 6.5.1 Primary expressions</a>
+<li><a href="#6.5.2"> 6.5.2 Postfix operators</a>
+<li><a href="#6.5.3"> 6.5.3 Unary operators</a>
+<li><a href="#6.5.4"> 6.5.4 Cast operators</a>
+<li><a href="#6.5.5"> 6.5.5 Multiplicative operators</a>
+<li><a href="#6.5.6"> 6.5.6 Additive operators</a>
+<li><a href="#6.5.7"> 6.5.7 Bitwise shift operators</a>
+<li><a href="#6.5.8"> 6.5.8 Relational operators</a>
+<li><a href="#6.5.9"> 6.5.9 Equality operators</a>
+<li><a href="#6.5.10"> 6.5.10 Bitwise AND operator</a>
+<li><a href="#6.5.11"> 6.5.11 Bitwise exclusive OR operator</a>
+<li><a href="#6.5.12"> 6.5.12 Bitwise inclusive OR operator</a>
+<li><a href="#6.5.13"> 6.5.13 Logical AND operator</a>
+<li><a href="#6.5.14"> 6.5.14 Logical OR operator</a>
+<li><a href="#6.5.15"> 6.5.15 Conditional operator</a>
+<li><a href="#6.5.16"> 6.5.16 Assignment operators</a>
+<li><a href="#6.5.17"> 6.5.17 Comma operator</a>
+</ul>
+<li><a href="#6.6"> 6.6 Constant expressions</a>
+<li><a href="#6.7"> 6.7 Declarations</a>
+<ul>
+<li><a href="#6.7.1"> 6.7.1 Storage-class specifiers</a>
+<li><a href="#6.7.2"> 6.7.2 Type specifiers</a>
+<li><a href="#6.7.3"> 6.7.3 Type qualifiers</a>
+<li><a href="#6.7.4"> 6.7.4 Function specifiers</a>
+<li><a href="#6.7.5"> 6.7.5 Declarators</a>
+<li><a href="#6.7.6"> 6.7.6 Type names</a>
+<li><a href="#6.7.7"> 6.7.7 Type definitions</a>
+<li><a href="#6.7.8"> 6.7.8 Initialization</a>
+</ul>
+<li><a href="#6.8"> 6.8 Statements and blocks</a>
+<ul>
+<li><a href="#6.8.1"> 6.8.1 Labeled statements</a>
+<li><a href="#6.8.2"> 6.8.2 Compound statement</a>
+<li><a href="#6.8.3"> 6.8.3 Expression and null statements</a>
+<li><a href="#6.8.4"> 6.8.4 Selection statements</a>
+<li><a href="#6.8.5"> 6.8.5 Iteration statements</a>
+<li><a href="#6.8.6"> 6.8.6 Jump statements</a>
+</ul>
+<li><a href="#6.9"> 6.9 External definitions</a>
+<ul>
+<li><a href="#6.9.1"> 6.9.1 Function definitions</a>
+<li><a href="#6.9.2"> 6.9.2 External object definitions</a>
+</ul>
+<li><a href="#6.10"> 6.10 Preprocessing directives</a>
+<ul>
+<li><a href="#6.10.1"> 6.10.1 Conditional inclusion</a>
+<li><a href="#6.10.2"> 6.10.2 Source file inclusion</a>
+<li><a href="#6.10.3"> 6.10.3 Macro replacement</a>
+<li><a href="#6.10.4"> 6.10.4 Line control</a>
+<li><a href="#6.10.5"> 6.10.5 Error directive</a>
+<li><a href="#6.10.6"> 6.10.6 Pragma directive</a>
+<!--page 3 -->
+<li><a href="#6.10.7"> 6.10.7 Null directive</a>
+<li><a href="#6.10.8"> 6.10.8 Predefined macro names</a>
+<li><a href="#6.10.9"> 6.10.9 Pragma operator</a>
+</ul>
+<li><a href="#6.11"> 6.11 Future language directions</a>
+<ul>
+<li><a href="#6.11.1"> 6.11.1 Floating types</a>
+<li><a href="#6.11.2"> 6.11.2 Linkages of identifiers</a>
+<li><a href="#6.11.3"> 6.11.3 External names</a>
+<li><a href="#6.11.4"> 6.11.4 Character escape sequences</a>
+<li><a href="#6.11.5"> 6.11.5 Storage-class specifiers</a>
+<li><a href="#6.11.6"> 6.11.6 Function declarators</a>
+<li><a href="#6.11.7"> 6.11.7 Function definitions</a>
+<li><a href="#6.11.8"> 6.11.8 Pragma directives</a>
+<li><a href="#6.11.9"> 6.11.9 Predefined macro names</a>
+</ul>
+</ul>
+<li><a href="#7">7. Library</a>
+<ul>
+<li><a href="#7.1"> 7.1 Introduction</a>
+<ul>
+<li><a href="#7.1.1"> 7.1.1 Definitions of terms</a>
+<li><a href="#7.1.2"> 7.1.2 Standard headers</a>
+<li><a href="#7.1.3"> 7.1.3 Reserved identifiers</a>
+<li><a href="#7.1.4"> 7.1.4 Use of library functions</a>
+</ul>
+<li><a href="#7.2"> 7.2 Diagnostics <assert.h></a>
+<ul>
+<li><a href="#7.2.1"> 7.2.1 Program diagnostics</a>
+</ul>
+<li><a href="#7.3"> 7.3 Complex arithmetic <complex.h></a>
+<ul>
+<li><a href="#7.3.1"> 7.3.1 Introduction</a>
+<li><a href="#7.3.2"> 7.3.2 Conventions</a>
+<li><a href="#7.3.3"> 7.3.3 Branch cuts</a>
+<li><a href="#7.3.4"> 7.3.4 The CX_LIMITED_RANGE pragma</a>
+<li><a href="#7.3.5"> 7.3.5 Trigonometric functions</a>
+<li><a href="#7.3.6"> 7.3.6 Hyperbolic functions</a>
+<li><a href="#7.3.7"> 7.3.7 Exponential and logarithmic functions</a>
+<li><a href="#7.3.8"> 7.3.8 Power and absolute-value functions</a>
+<li><a href="#7.3.9"> 7.3.9 Manipulation functions</a>
+</ul>
+<li><a href="#7.4"> 7.4 Character handling <ctype.h></a>
+<ul>
+<li><a href="#7.4.1"> 7.4.1 Character classification functions</a>
+<li><a href="#7.4.2"> 7.4.2 Character case mapping functions</a>
+</ul>
+<li><a href="#7.5"> 7.5 Errors <errno.h></a>
+<li><a href="#7.6"> 7.6 Floating-point environment <fenv.h></a>
+<ul>
+<li><a href="#7.6.1"> 7.6.1 The FENV_ACCESS pragma</a>
+<li><a href="#7.6.2"> 7.6.2 Floating-point exceptions</a>
+<li><a href="#7.6.3"> 7.6.3 Rounding</a>
+<li><a href="#7.6.4"> 7.6.4 Environment</a>
+</ul>
+<li><a href="#7.7"> 7.7 Characteristics of floating types <float.h></a>
+<li><a href="#7.8"> 7.8 Format conversion of integer types <inttypes.h></a>
+<ul>
+<li><a href="#7.8.1"> 7.8.1 Macros for format specifiers</a>
+<li><a href="#7.8.2"> 7.8.2 Functions for greatest-width integer types</a>
+<!--page 4 -->
+</ul>
+<li><a href="#7.9"> 7.9 Alternative spellings <iso646.h></a>
+<li><a href="#7.10"> 7.10 Sizes of integer types <limits.h></a>
+<li><a href="#7.11"> 7.11 Localization <locale.h></a>
+<ul>
+<li><a href="#7.11.1"> 7.11.1 Locale control</a>
+<li><a href="#7.11.2"> 7.11.2 Numeric formatting convention inquiry</a>
+</ul>
+<li><a href="#7.12"> 7.12 Mathematics <math.h></a>
+<ul>
+<li><a href="#7.12.1"> 7.12.1 Treatment of error conditions</a>
+<li><a href="#7.12.2"> 7.12.2 The FP_CONTRACT pragma</a>
+<li><a href="#7.12.3"> 7.12.3 Classification macros</a>
+<li><a href="#7.12.4"> 7.12.4 Trigonometric functions</a>
+<li><a href="#7.12.5"> 7.12.5 Hyperbolic functions</a>
+<li><a href="#7.12.6"> 7.12.6 Exponential and logarithmic functions</a>
+<li><a href="#7.12.7"> 7.12.7 Power and absolute-value functions</a>
+<li><a href="#7.12.8"> 7.12.8 Error and gamma functions</a>
+<li><a href="#7.12.9"> 7.12.9 Nearest integer functions</a>
+<li><a href="#7.12.10"> 7.12.10 Remainder functions</a>
+<li><a href="#7.12.11"> 7.12.11 Manipulation functions</a>
+<li><a href="#7.12.12"> 7.12.12 Maximum, minimum, and positive difference functions</a>
+<li><a href="#7.12.13"> 7.12.13 Floating multiply-add</a>
+<li><a href="#7.12.14"> 7.12.14 Comparison macros</a>
+</ul>
+<li><a href="#7.13"> 7.13 Nonlocal jumps <setjmp.h></a>
+<ul>
+<li><a href="#7.13.1"> 7.13.1 Save calling environment</a>
+<li><a href="#7.13.2"> 7.13.2 Restore calling environment</a>
+</ul>
+<li><a href="#7.14"> 7.14 Signal handling <signal.h></a>
+<ul>
+<li><a href="#7.14.1"> 7.14.1 Specify signal handling</a>
+<li><a href="#7.14.2"> 7.14.2 Send signal</a>
+</ul>
+<li><a href="#7.15"> 7.15 Variable arguments <stdarg.h></a>
+<ul>
+<li><a href="#7.15.1"> 7.15.1 Variable argument list access macros</a>
+</ul>
+<li><a href="#7.16"> 7.16 Boolean type and values <stdbool.h></a>
+<li><a href="#7.17"> 7.17 Common definitions <stddef.h></a>
+<li><a href="#7.18"> 7.18 Integer types <stdint.h></a>
+<ul>
+<li><a href="#7.18.1"> 7.18.1 Integer types</a>
+<li><a href="#7.18.2"> 7.18.2 Limits of specified-width integer types</a>
+<li><a href="#7.18.3"> 7.18.3 Limits of other integer types</a>
+<li><a href="#7.18.4"> 7.18.4 Macros for integer constants</a>
+</ul>
+<li><a href="#7.19"> 7.19 Input/output <stdio.h></a>
+<ul>
+<li><a href="#7.19.1"> 7.19.1 Introduction</a>
+<li><a href="#7.19.2"> 7.19.2 Streams</a>
+<li><a href="#7.19.3"> 7.19.3 Files</a>
+<li><a href="#7.19.4"> 7.19.4 Operations on files</a>
+<li><a href="#7.19.5"> 7.19.5 File access functions</a>
+<li><a href="#7.19.6"> 7.19.6 Formatted input/output functions</a>
+<li><a href="#7.19.7"> 7.19.7 Character input/output functions</a>
+<li><a href="#7.19.8"> 7.19.8 Direct input/output functions</a>
+<!--page 5 -->
+<li><a href="#7.19.9"> 7.19.9 File positioning functions</a>
+<li><a href="#7.19.10"> 7.19.10 Error-handling functions</a>
+</ul>
+<li><a href="#7.20"> 7.20 General utilities <stdlib.h></a>
+<ul>
+<li><a href="#7.20.1"> 7.20.1 Numeric conversion functions</a>
+<li><a href="#7.20.2"> 7.20.2 Pseudo-random sequence generation functions</a>
+<li><a href="#7.20.3"> 7.20.3 Memory management functions</a>
+<li><a href="#7.20.4"> 7.20.4 Communication with the environment</a>
+<li><a href="#7.20.5"> 7.20.5 Searching and sorting utilities</a>
+<li><a href="#7.20.6"> 7.20.6 Integer arithmetic functions</a>
+<li><a href="#7.20.7"> 7.20.7 Multibyte/wide character conversion functions</a>
+<li><a href="#7.20.8"> 7.20.8 Multibyte/wide string conversion functions</a>
+</ul>
+<li><a href="#7.21"> 7.21 String handling <string.h></a>
+<ul>
+<li><a href="#7.21.1"> 7.21.1 String function conventions</a>
+<li><a href="#7.21.2"> 7.21.2 Copying functions</a>
+<li><a href="#7.21.3"> 7.21.3 Concatenation functions</a>
+<li><a href="#7.21.4"> 7.21.4 Comparison functions</a>
+<li><a href="#7.21.5"> 7.21.5 Search functions</a>
+<li><a href="#7.21.6"> 7.21.6 Miscellaneous functions</a>
+</ul>
+<li><a href="#7.22"> 7.22 Type-generic math <tgmath.h></a>
+<li><a href="#7.23"> 7.23 Date and time <time.h></a>
+<ul>
+<li><a href="#7.23.1"> 7.23.1 Components of time</a>
+<li><a href="#7.23.2"> 7.23.2 Time manipulation functions</a>
+<li><a href="#7.23.3"> 7.23.3 Time conversion functions</a>
+</ul>
+<li><a href="#7.24"> 7.24 Extended multibyte and wide character utilities <wchar.h></a>
+<ul>
+<li><a href="#7.24.1"> 7.24.1 Introduction</a>
+<li><a href="#7.24.2"> 7.24.2 Formatted wide character input/output functions</a>
+<li><a href="#7.24.3"> 7.24.3 Wide character input/output functions</a>
+<li><a href="#7.24.4"> 7.24.4 General wide string utilities</a>
+<li><a href="#7.24.5"> 7.24.5 Wide character time conversion functions</a>
+<li><a href="#7.24.6"> 7.24.6 Extended multibyte/wide character conversion utilities</a>
+</ul>
+<li><a href="#7.25"> 7.25 Wide character classification and mapping utilities <wctype.h></a>
+<ul>
+<li><a href="#7.25.1"> 7.25.1 Introduction</a>
+<li><a href="#7.25.2"> 7.25.2 Wide character classification utilities</a>
+<li><a href="#7.25.3"> 7.25.3 Wide character case mapping utilities</a>
+</ul>
+<li><a href="#7.26"> 7.26 Future library directions</a>
+<ul>
+<li><a href="#7.26.1"> 7.26.1 Complex arithmetic <complex.h></a>
+<li><a href="#7.26.2"> 7.26.2 Character handling <ctype.h></a>
+<li><a href="#7.26.3"> 7.26.3 Errors <errno.h></a>
+<li><a href="#7.26.4"> 7.26.4 Format conversion of integer types <inttypes.h></a>
+<li><a href="#7.26.5"> 7.26.5 Localization <locale.h></a>
+<li><a href="#7.26.6"> 7.26.6 Signal handling <signal.h></a>
+<li><a href="#7.26.7"> 7.26.7 Boolean type and values <stdbool.h></a>
+<li><a href="#7.26.8"> 7.26.8 Integer types <stdint.h></a>
+<li><a href="#7.26.9"> 7.26.9 Input/output <stdio.h></a>
+<!--page 6 -->
+<li><a href="#7.26.10"> 7.26.10 General utilities <stdlib.h></a>
+<li><a href="#7.26.11"> 7.26.11 String handling <string.h></a>
+<li><a href="#7.26.12"> 7.26.12 Extended multibyte and wide character utilities <wchar.h></a>
+<li><a href="#7.26.13"> 7.26.13 Wide character classification and mapping utilities <wctype.h></a>
+</ul>
+</ul>
+<li><a href="#A">Annex A (informative) Language syntax summary</a>
+<ul>
+<li><a href="#A.1"> A.1 Lexical grammar</a>
+<li><a href="#A.2"> A.2 Phrase structure grammar</a>
+<li><a href="#A.3"> A.3 Preprocessing directives</a>
+</ul>
+<li><a href="#B">Annex B (informative) Library summary</a>
+<ul>
+<li><a href="#B.1"> B.1 Diagnostics <assert.h></a>
+<li><a href="#B.2"> B.2 Complex <complex.h></a>
+<li><a href="#B.3"> B.3 Character handling <ctype.h></a>
+<li><a href="#B.4"> B.4 Errors <errno.h></a>
+<li><a href="#B.5"> B.5 Floating-point environment <fenv.h></a>
+<li><a href="#B.6"> B.6 Characteristics of floating types <float.h></a>
+<li><a href="#B.7"> B.7 Format conversion of integer types <inttypes.h></a>
+<li><a href="#B.8"> B.8 Alternative spellings <iso646.h></a>
+<li><a href="#B.9"> B.9 Sizes of integer types <limits.h></a>
+<li><a href="#B.10"> B.10 Localization <locale.h></a>
+<li><a href="#B.11"> B.11 Mathematics <math.h></a>
+<li><a href="#B.12"> B.12 Nonlocal jumps <setjmp.h></a>
+<li><a href="#B.13"> B.13 Signal handling <signal.h></a>
+<li><a href="#B.14"> B.14 Variable arguments <stdarg.h></a>
+<li><a href="#B.15"> B.15 Boolean type and values <stdbool.h></a>
+<li><a href="#B.16"> B.16 Common definitions <stddef.h></a>
+<li><a href="#B.17"> B.17 Integer types <stdint.h></a>
+<li><a href="#B.18"> B.18 Input/output <stdio.h></a>
+<li><a href="#B.19"> B.19 General utilities <stdlib.h></a>
+<li><a href="#B.20"> B.20 String handling <string.h></a>
+<li><a href="#B.21"> B.21 Type-generic math <tgmath.h></a>
+<li><a href="#B.22"> B.22 Date and time <time.h></a>
+<li><a href="#B.23"> B.23 Extended multibyte/wide character utilities <wchar.h></a>
+<li><a href="#B.24"> B.24 Wide character classification and mapping utilities <wctype.h></a>
+</ul>
+<li><a href="#C">Annex C (informative) Sequence points</a>
+<li><a href="#D">Annex D (normative) Universal character names for identifiers</a>
+<li><a href="#E">Annex E (informative) Implementation limits</a>
+<li><a href="#F">Annex F (normative) IEC 60559 floating-point arithmetic</a>
+<ul>
+<li><a href="#F.1"> F.1 Introduction</a>
+<li><a href="#F.2"> F.2 Types</a>
+<li><a href="#F.3"> F.3 Operators and functions</a>
+<!--page 7 -->
+<li><a href="#F.4"> F.4 Floating to integer conversion</a>
+<li><a href="#F.5"> F.5 Binary-decimal conversion</a>
+<li><a href="#F.6"> F.6 Contracted expressions</a>
+<li><a href="#F.7"> F.7 Floating-point environment</a>
+<li><a href="#F.8"> F.8 Optimization</a>
+<li><a href="#F.9"> F.9 Mathematics <math.h></a>
+</ul>
+<li><a href="#G">Annex G (informative) IEC 60559-compatible complex arithmetic</a>
+<ul>
+<li><a href="#G.1"> G.1 Introduction</a>
+<li><a href="#G.2"> G.2 Types</a>
+<li><a href="#G.3"> G.3 Conventions</a>
+<li><a href="#G.4"> G.4 Conversions</a>
+<li><a href="#G.5"> G.5 Binary operators</a>
+<li><a href="#G.6"> G.6 Complex arithmetic <complex.h></a>
+<li><a href="#G.7"> G.7 Type-generic math <tgmath.h></a>
+</ul>
+<li><a href="#H">Annex H (informative) Language independent arithmetic</a>
+<ul>
+<li><a href="#H.1"> H.1 Introduction</a>
+<li><a href="#H.2"> H.2 Types</a>
+<li><a href="#H.3"> H.3 Notification</a>
+</ul>
+<li><a href="#I">Annex I (informative) Common warnings</a>
+<li><a href="#J">Annex J (informative) Portability issues</a>
+<ul>
+<li><a href="#J.1"> J.1 Unspecified behavior</a>
+<li><a href="#J.2"> J.2 Undefined behavior</a>
+<li><a href="#J.3"> J.3 Implementation-defined behavior</a>
+<li><a href="#J.4"> J.4 Locale-specific behavior</a>
+<li><a href="#J.5"> J.5 Common extensions</a>
+</ul>
+<li><a href="#Bibliography">Bibliography</a>
+<li><a href="#Index">Index</a>
+<!--page 8 -->
+<!--page 9 -->
+</ul>
+
+<h2><a name="Foreword" href="#Foreword">Foreword</a></h2>
+<p><!--para 1 -->