O C99 adicionou um booltipo cuja semântica é fundamentalmente diferente daquela de quase todos os tipos inteiros que existiam antes em C, incluindo tipos definidos pelo usuário e de extensão do compilador destinados a esses fins, e que alguns programas podem ter "tipos def" parabool .
Por exemplo, dado bool a = 0.1, b=2, c=255, d=256;, o booltipo C99 definiria todos os quatro objetos como 1. Se um programa C89 typedef unsigned char boolfosse usado , os objetos receberiam 0, 1, 255 e 0, respectivamente. Se usado char, os valores podem ser os acima, ou cpode ser -1. Se ele tivesse usado uma extensão bitou __bittipo de compilador , os resultados provavelmente seriam 0, 0, 1, 0 (tratando de bitmaneira equivalente a um campo de bits não assinado do tamanho 1 ou um tipo inteiro não assinado com um bit de valor).