if((a == b) == TRUE)能如願運行 (只要 TRUE 為 1), 但顯然這很傻。 事實上, 跟 TRUE 和 FALSE 的 跟 TRUE 和 FALSE 的 顯示比較都不合適, 因為有些庫函數 (如 isupper(), isalpha() 等) 在成功時返 回非零值, 但不一定為1。 (再說, 如果你認為 ``if((a == b) == TRUE)" 比 ``if(a == b)" 好, 為什麼就此打住呢?為什麼不使用 ``if(((a == b) == TRUE) == TRUE)" 呢?) 一般規則是只在向布爾變量賦值或 函數參數中才使用 TRUE 和 FALSE (或類似的東西), 或者用於函數的返回值, 但決不用於比較。
預處理宏 TRUE 和 FALSE (當然還有 NULL) 只是用於增加代碼可讀性, 而不是因為其 值可能改變。(參見問題 5.3 和 5.8。)
儘管使用 TRUE 和 FALSE 這樣的宏 (或者 YES 和 NO) 看上去更清楚, 布爾值和 定義在 C 語言中的複雜性讓很多程序員覺得 TRUE 和 FALSE 宏不過更令人迷惑, 因而更喜歡使用 1 和 0。 參見問題 5.7。
參考資料: [K&R1, Sec. 2.6 p. 39, Sec. 2.7 p. 41]; [K&R2, Sec. 2.6 p. 42, Sec. 2.7 p. 44, Sec. A7.4.7 p. 204, Sec. A7.9 p. 206]; [ISO, Sec. 6.3.3.3, Sec. 6.3.8, Sec. 6.3.9, Sec. 6.3.13, Sec. 6.3.14, Sec. 6.3.15, Sec. 6.6.4.1, Sec. 6.6.5]; [H&S, Sec. 7.5.4 pp. 196-7, Sec. 7.6.4 pp. 207-8, Sec. 7.6.5 pp. 208-9, Sec. 7.7 pp. 217-8, Sec. 7.8 pp. 218-9, Sec. 8.5 pp. 238-9, Sec. 8.6 pp. 241-4]; ``What the Tortoise Said to Achilles"。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)