В 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 или целочисленному типу без знака с одним битом значения).