Стандарт C дает следующие гарантии относительно рангов преобразования стандартных целочисленных типов и их точности:
_Bool (1) < char (8)
<= short (16)
<= int (16)
<= long (32)
<= long long (64)
В случае _Bool
точность является точной, тогда как остальные являются минимальными значениями. Также могут быть дополнительные, так называемые расширенные целочисленные типы.
A char
- наименьшая адресуемая единица памяти, поэтому sizeof (char) == 1
независимо от ее точности (которая задается CHAR_BIT
) Размеры других стандартных целочисленных типов определяются реализацией. Я подозреваю, что sizeof (_Bool)
также будет 1
, но я не смог найти в стандарте ничего, что действительно гарантирует это ...