Preface
Credits
1 Lexical Elements
1.1 Identifiers
1.2 Keywords
1.3 Constants
1.3.1 Integer Constants
1.3.2 Character Constants
1.3.3 Real Number Constants
1.3.4 String Constants
1.4 Operators
1.5 Separators
1.6 White Space
2 Data Types
2.1 Primitive Data Types
2.1.1 Integer Types
2.1.2 Real Number Types
2.1.3 Complex Number Types
2.1.3.1 Standard Complex Number Types
2.1.3.2 GNU Extensions for Complex Number Types
2.2 Enumerations
2.2.1 Defining Enumerations
2.2.2 Declaring Enumerations
2.3 Unions
2.3.1 Defining Unions
2.3.2 Declaring Union Variables
2.3.2.1 Declaring Union Variables at Definition
2.3.2.2 Declaring Union Variables After Definition
2.3.2.3 Initializing Union Members
2.3.3 Accessing Union Members
2.3.4 Size of Unions
2.4 Structures
2.4.1 Defining Structures
2.4.2 Declaring Structure Variables
2.4.2.1 Declaring Structure Variables at Definition
2.4.2.2 Declaring Structure Variables After Definition
2.4.2.3 Initializing Structure Members
2.4.3 Accessing Structure Members
2.4.4 Bit Fields
2.4.5 Size of Structures
2.5 Arrays
2.5.1 Declaring Arrays
2.5.2 Initializing Arrays
2.5.3 Accessing Array Elements
2.5.4 Multidimensional Arrays
2.5.5 Arrays as Strings
2.5.6 Arrays of Unions
2.5.7 Arrays of Structures
2.6 Pointers
2.6.1 Declaring Pointers
2.6.2 Initializing Pointers
2.6.3 Pointers to Unions
2.6.4 Pointers to Structures
2.7 Incomplete Types
2.8 Type Qualifiers
2.9 Storage Class Specifiers
2.10 Renaming Types
3 Expressions and Operators
3.1 Expressions
3.2 Assignment Operators
3.3 Incrementing and Decrementing
3.4 Arithmetic Operators
3.5 Complex Conjugation
3.6 Comparison Operators
3.7 Logical Operators
3.8 Bit Shifting
3.9 Bitwise Logical Operators
3.10 Pointer Operators
3.11 The sizeof Operator
3.12 Type Casts
3.13 Array Subscripts
3.14 Function Calls as Expressions
3.15 The Comma Operator
3.16 Member Access Expressions
3.17 Conditional Expressions
3.18 Statements and Declarations in Expressions
3.19 Operator Precedence
3.20 Order of Evaluation
3.20.1 Side Effects
3.20.2 Sequence Points
3.20.3 Sequence Points Constrain Expressions
3.20.4 Sequence Points and Signal Delivery
4 Statements
4.1 Labels
4.2 Expression Statements
4.3 The if Statement
4.4 The switch Statement
4.5 The while Statement
4.6 The do Statement
4.7 The for Statement
4.8 Blocks
4.9 The Null Statement
4.10 The goto Statement
4.11 The break Statement
4.12 The continue Statement
4.13 The return Statement
4.14 The typedef Statement
5 Functions
5.1 Function Declarations
5.2 Function Definitions
5.3 Calling Functions
5.4 Function Parameters
5.5 Variable Length Parameter Lists
5.6 Calling Functions Through Function Pointers
5.7 The main Function
5.8 Recursive Functions
5.9 Static Functions
5.10 Nested Functions
6 Program Structure and Scope
6.1 Program Structure
6.2 Scope
7 A Sample Program
7.1 hello.c
7.2 system.h
Appendix A Overflow
A.1 Basics of Integer Overflow
A.2 Examples of Code Assuming Wraparound Overflow
A.3 Optimizations That Break Wraparound Arithmetic
A.4 Practical Advice for Signed Overflow Issues
A.5 Signed Integer Division and Integer Overflow
GNU Free Documentation License
Index