All references to the standard herein refer to ISO C17
.
The following code will show you the size of a boolean, which must be at least one given that this is the minimum addressable unit:
printf("%zu\n", sizeof(_Bool)); // Typically, but not necessarily, 1.
The standard (6.2.5 Types
, though this is also the case back to C99
) states:
An object declared as type
_Bool
is large enough to store the values 0 and 1.
As mentioned earlier, the size cannot be smaller than one(1) but it would be legal for it to be larger, as supported by footnote 124 in section 6.7.2.1 Structure and union specifiers
of the standard, noting in particular the “at least” section:
While the number of bits in a
_Bool
object is at leastCHAR_BIT
, the width (number of sign and value bits) of a_Bool
may be just 1 bit.