The free version of this new edition is now available at
This new edition has been the occasion to overhaul the presentation in many places, but its main purpose is the update to the new C standard, C23. The goal was to publish this new edition of Modern C at the same time as the new C standard goes through the procedure of ISO publication. The closest approximation of the contents of the new standard in a publically available document can be found here. New releases of major compilers already implement most of the new features that it brings.
Among the most noticeable changes and additions that we handle are
those for integers: there are new bit-precise types coined
_BitInt(N)
, new C library headers <stdckdint.h>
(for arithmetic
with overflow check) and <stdbit.h>
(for bit manipulation),
possibilities for 128 bit types on modern architectures, and
substantial improvements for enumeration types. Other new concepts in
C23 include a nullptr
constant and its underlying type, syntactic
annotation with attributes, more tools for type generic programming
such as type inference with auto
and typeof
, default
initialization with {}
, even for variable length arrays, and
constexpr
for name constants of any type. Furthermore, new material
has been added, discussing compound expressions and lambdas, so-called
“internationalization”, a comprehensive approach for program failure.
Also added has been an appendix and a temporary include header for an easy transition to C23 on existing platforms, that will allow you to start off with C23 right away.