Monday
Room 9
09:00 - 17:00
(UTC+02)
2 Days
Effective C (and C++)
The world runs on code written in the C programming language, yet most schools begin the curriculum with Python or Java. Effective C bridges this gap and brings C into the modern era—covering the modern C17 Standard as well as C23 features. After completing this workshop, you’ll soon be writing professional, portable, and secure C programs to power robust systems and solve real-world problems.
Book: Effective C
The world runs on code written in the C programming language, yet most schools begin the curriculum with Python or Java. Effective C bridges this gap and brings C into the modern era—covering the modern C17 Standard as well as potential C2x features. With the aid of this instant classic, you’ll soon be writing professional, portable, and secure C programs to power robust systems and solve real-world problems.
Robert C. Seacord introduces C and the C Standard Library while addressing best practices, common errors, and open debates in the C community. Developed together with other C Standards committee experts, Effective C will teach you how to debug, test, and analyze C programs. You’ll benefit from Seacord’s concise explanations of C language constructs and behaviors, and from his 40 years of coding experience.
You’ll learn:
- How to identify and handle undefined behavior in a C program
- The range and representations of integers and floating-point values
- How dynamic memory allocation works and how to use nonstandard functions
- How to use character encodings and types
- How to perform I/O with terminals and file systems using C Standard streams and POSIX file descriptors
- How to understand the C compiler’s translation phases and the role of the preprocessor
- How to test, debug, and analyze C programs
Effective C will teach you how to write professional, secure, and portable C code that will stand the test of time.
DAY ONE
GETTING STARTED WITH C
- Developing Your First C Program
- Compiling and Running Your Program
- Editors and Integrated Development Environments
- Compilers
- GNU Compiler Collection
- Clang
- Microsoft Visual Studio
- Portability
- Implementation-Defined Behavior
- Unspecified Behavior
- Undefined Behavior
- Locale-Specific Behavior and Common Extensions
OBJECTS, FUNCTIONS, AND TYPES
- Objects, Functions, Types, and Pointers
- Declaring Variables
- Swapping Values
- Scope
- Storage Duration
- Alignment
- Object Types
- Boolean Types
- Character Types
- Numerical Types
- void Types
- Function Types
- Derived Types
- Pointer Types
- Arrays
- Structures
- Unions
- Tags
- Type Qualifiers
DAY TWO
ARITHMETIC TYPES
- Integers
- Padding and Precision
- The <limits.h> Header File
- Declaring Integers
- Unsigned Integers
- Signed Integers
- Integer Constants
- Floating-Point
- Arithmetic Conversion
- Integer Conversion Rank
- Integer Promotions
- Usual Arithmetic Conversions
- Safe Conversions
EXPRESSIONS AND OPERATORS
- Simple Assignment
- Evaluations
- Function Invocation
- Increment and Decrement Operators
- Operator Precedence and Associativity
- Order of Evaluation
- Unsequenced and Indeterminately Sequenced Evaluations
- Sequence Points
- sizeof Operator
- Arithmetic Operators
- Unary + and – Operators
- Logical Negation Operator
- Multiplicative Operators
- Additive Operators
- Bitwise Operators
- Complement Operator
- Shift Operators
- Bitwise AND Operator
- Bitwise Exclusive OR Operator
- Bitwise Inclusive OR Operator
- Logical Operators
- Cast Operators
- Conditional Operator
- _Alignof Operator
- Relational Operators
- Compound Assignment Operators
- Comma Operator
- Pointer Arithmetic