首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言布林邏輯模擬:#define 定義 TRUE/FALSE 常數

     編輯:關於C語言

背景:C89 無原生布林型別

C99 前 (stdbool.h 提供 bool, true, false) 需自行定義布林常數。慣例用整數 1 代表真、0 代表假。

完整程式碼

#include 
#define TRUE  1
#define FALSE 0

int main() {
    int again = TRUE, temp;
    printf("\nIt will stop when you input a num smaller than 50!\n");
    while (again) {
        printf("please input a num: ");
        scanf("%d", &temp);
        if (temp < 50) again = FALSE;
        else           again = TRUE;
    }
    return 0;
}

執行流程

It will stop when you input a num smaller than 50!
please input a num: 60
please input a num: 70
please input a num: 40
// 迴圈結束

現代 C 最佳實踐

// C99 標準做法
#include 

int main() {
    bool again = true;
    int temp;
    while (again) {
        scanf("%d", &temp);
        again = (temp >= 50); // 直接用關係運算式結果 (0/1) 賦值給 bool
    }
}

關鍵差異對照

特性#define TRUE 1stdbool.h
型別安全無 (整數語境皆可用)有 (_Bool 型別,隱式轉換)
語意清晰度依賴命名慣例語言原生關鍵字
除錯器顯示顯示 1/0顯示 true/false
相容性所有 C 版本C99 以上

延伸:避免常見陷阱

  • 不要寫 #define TRUE !FALSE:展開後 if (x == TRUE) 變 if (x == !0) → if (x == 1),但 if (x == !FALSE) 邏輯易誤讀
  • 條件判斷直接用運算式:if (temp < 50) 比 if (temp < 50 == TRUE) 更清晰
  • 函式回傳布林:慣例非零為真、零為假,呼叫端直接 if (func())

總結

以 #define 模擬布林值是 C 語言早期的標準作法。現代專案請直接使用 <stdbool.h>,享受型別安全與語意清晰。理解歷史作法有助於閱讀舊代碼庫,但新代碼請遵循現代標準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved