3.1. Types3.1.1. Working with Built-in Types3.1.1.1. Choosing a built-in type3.1.1.2. Converting built-in types3.2. Variables and Constants3.2.1. Definite Assignment3.2.2. Constants3.2.3. Enumerations3.2.4. Strings3.2.5. Identifiers3.3. Expressions3.4. Whitespace3.5. Statements3.5.1. Unconditional Branching Statements3.5.2. Conditional Branching Statements3.5.2.1. if...else statements3.5.2.2. Nested if statements3.5.2.3. switch statements: an alternative to nested ifs3.5.2.4. Switch on string statements3.5.3. Iteration Statements3.5.3.1. The goto statement3.5.3.2. The while loop3.5.3.3. The do...while loop3.5.3.4. The for loop3.5.3.5. The foreach statement3.5.3.6. The continue and break statements3.6. Operators3.6.1. The Assignment Operator (=)3.6.2. Mathematical Operators3.6.2.1. Simple arithmetical operators (+, -, *, /)3.6.2.2. The modulus operator (%) to return remainders3.6.3. Increment and Decrement Operators3.6.3.1. Calculate and reassign operators3.6.3.2. The prefix and postfix operators3.6.4. Relational Operators3.6.5. Use of Logical Operators with Conditionals3.6.6. Operator Precedence3.6.7. The Ternary Operator3.7. Preprocessor Directives3.7.1. Defining Identifiers3.7.2. Undefining Identifiers3.7.3. #if, #elif, #else, and #endif3.7.4. #region