C99 добавил тип bool
, семантика которого принципиально отличается от таковых почти всех целочисленных типов, которые существовали ранее в C, включая определяемые пользователем типы и расширения компилятора, предназначенные для таких целей, и которые могут иметь некоторые программы "type-def" ed bool
.
Например, если задано bool a = 0.1, b=2, c=255, d=256;
, тип C99 bool
установит для всех четырех объектов значение 1. Если программа C89 использует typedef unsigned char bool
, объекты получат 0, 1, 255 и 0 соответственно. Если используется char
, значения могут быть такими же, как указано выше, или c
может быть -1. Если бы он использовал расширение bit
или __bit
расширения компилятора, результаты, вероятно, были бы равны 0, 0, 1, 0 (обработка bit
способом, эквивалентным битовому полю без знака размера 1 или целое число без знака с одним битом значения).