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
Get number of bytes:
alignof(int); alignof(x);
Set number of bytes:
alignas(double) int x;
Also adds macros to check if this is available:
__alignas_is_defined __alignof_is_defined