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