C99 menambahkan booljenis 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;, booltipe 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 cmungkin -1. Jika telah menggunakan ekstensi bitatau __bittipe kompiler , hasilnya kemungkinan akan 0, 0, 1, 0 (memperlakukan bitdengan cara yang setara dengan bidang bit yang tidak ditandatangani dari ukuran 1, atau tipe bilangan bulat yang tidak ditandatangani dengan satu bit nilai).