Download PDF
Integer literals and variable assignment in C, and naming conventions
Integer addition and subtraction in C
Integer multiplication and division in C
Evaluating mathematical expressions using abstract syntax trees, and -fix notation
Types of integers in C, characters and casting
Goto and switch in C
const, register and volatile in C
The C preprocessor
enum and const
Bitwise operations in C
Pointers and arrays in C
Strings in C
Floats in C
Structs in C
Booleans in C
Global and local scope in C
Relations and logical operators
Control flow and logic in C and the structured program theorem
Functions and stack memory in C
Side effects and sequence points in C
Typedef in C
Optimising compiled C code, including tail call optimisation and the restrict keyword
Macros and the C preprocessor
stddef.h - including size_t and the sizeof operator
Macros for boolean variables using stdbool.h
Allowing indefinite function arguments using stdarg.h
Adding fixed width integers with stdint.h
Documenting non-returning functions using stdnoreturn.h
Getting and setting type width using stdalign.h
Getting upper and lower integer limits using limits.h
Macros for operations (eg "and", "bitand") using iso646.h
float.h
Static single-assignment form
label_name: . . . goto label_name;
int x; switch(a) { case 1: x = 1; break; case 2: x = 0; break; case 3: x = 2; break; default: x = 5; }
If break isn’t used, all following cases will be run.