| Introduction | 1 |
| Fundamentals | 2 |
| C Program Structure | 3 |
| Character Sets | 4 |
| Identifiers | 6 |
| Categories and Scope of Identifiers | 7 |
| Basic Types | 9 |
| Integer Types | 9 |
| Real and Complex Floating Types | 11 |
| The Type void | 13 |
| Constants | 14 |
| Integer Constants | 14 |
| Floating Constants | 16 |
| Character Constants and String Literals | 16 |
| Expressions and Operators | 18 |
| Arithmetic Operators | 20 |
| Assignment Operators | 21 |
| Relational Operators and Logical Operators | 22 |
| Logical Operators | 23 |
| Bitwise Operators | 24 |
| Memory Accessing Operators | 25 |
| Other Operators | 27 |
| Type Conversions | 29 |
| Integer Promotion | 29 |
| Usual Arithmetic Conversions | 30 |
| Type Conversions in Assignments and Pointers | 30 |
| Statements | 31 |
| Block and Expression Statements | 32 |
| Jumps | 33 |
| Loops | 35 |
| Unconditional Jumps | 37 |
| Declarations | 39 |
| General Syntax and Examples | 39 |
| Complex Declarations | 40 |
| Variables | 41 |
| Storage Classes | 41 |
| Initialization | 42 |
| Derived Types | 43 |
| Enumeration Types | 43 |
| Structures, Unions, and Bit-Fields | 45 |
| Arrays | 49 |
| Pointers | 52 |
| Type Qualifiers and Type Definitions | 55 |
| Functions | 57 |
| Function Prototypes | 58 |
| Function Definitions | 59 |
| Function Calls | 61 |
| Functions with Variable Numbers of Arguments | 62 |
| Linkage of Identifiers | 64 |
| Processing Directives | 65 |
| Standard Library | 73 |
| Standard Header Files | 73 |
| Input and Output | 74 |
| Error Handling for Input/Output Functions | 76 |
| General File Access Functions | 76 |
| File Input/Output Functions | 79 |
| Numerical Limits and Number Classification | 87 |
| Value Ranges of Integer Types | 87 |
| Range and Precision of Real Floating Types | 88 |
| Classification of Floating-Point Numbers | 90 |
| Mathematical Functions | 91 |
| Mathematical Functions for Integer Types | 91 |
| Mathematical Functions for Real Floating Types | 92 |
| Optimizing Runtime Efficiency | 94 |
| Mathematical Functions for Complex Floating Types | 95 |
| Type-Generic Macros | 96 |
| Error Handling for Mathematical Functions | 97 |
| The Floating-Point Environment | 98 |
| Character Classification and Case Mapping | 101 |
| String Handling | 103 |
| Conversion Between Strings and Numbers | 105 |
| Multibyte Character Conversion | 107 |
| Searching and Sorting | 108 |
| Memory Block Management | 109 |
| Dynamic Memory Management | 110 |
| Time and Date | 111 |
| Process Control | 113 |
| Communication with the Operating System | 113 |
| Signals | 114 |
| Non-Local Jumps | 115 |
| Error Handling for System Functions | 116 |
| Internationalization | 116 |
| Index | 121 |