C99 menambahkan bool
jenis yang semantiknya secara fundamental berbeda dari hampir semua jenis bilangan bulat yang telah ada sebelumnya di C, termasuk jenis yang ditentukan pengguna dan ekstensi-ekstensi yang ditujukan untuk tujuan tersebut, dan yang beberapa program mungkin memiliki "tipe-def" ed untukbool
.
Sebagai contoh, diberikan bool a = 0.1, b=2, c=255, d=256;
, bool
tipe C99 akan mengatur keempat objek menjadi 1. Jika program C89 digunakan typedef unsigned char bool
, objek akan menerima masing-masing 0, 1, 255, dan 0. Jika digunakan char
, nilainya mungkin seperti di atas, atau c
mungkin -1. Jika telah menggunakan ekstensi bit
atau __bit
tipe kompiler , hasilnya kemungkinan akan 0, 0, 1, 0 (memperlakukan bit
dengan cara yang setara dengan bidang bit yang tidak ditandatangani dari ukuran 1, atau tipe bilangan bulat yang tidak ditandatangani dengan satu bit nilai).