Este truco (muy bueno por cierto) funciona si el compilador tiene definido el valor booleano TRUE como 1, esto no siempre es así, de echo el valor TRUE puede ser cualquier valor distinto de cero. Algunos compiladores de echo lo definen como:
typedef TRUE !0
Y podemos tener cualquier valor definido, aunque lo normal es que sea como propone Manolo.
Un saludo.