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

C語言條件運算符(三目運算符):語法、優先級、嵌套與實戰替代 if-else

     編輯:C 語言基礎

條件運算符語法

表達式1 ? 表達式2 : 表達式3
  • C 唯一三目運算符(三個操作數)
  • 規則:表達式1 真 → 結果為表達式2;假 → 結果為表達式3
  • 常用於賦值語句右側

替代 if-else 示例

// if-else 版
if (a > b) max = a;
else max = b;

// 條件運算符版(一行搞定)
max = (a > b) ? a : b;
條件運算符可視為簡寫版 if-else,完全可互換。

優先級與結合性

  • 優先級:低於關系/算術運算符,高於賦值運算符
  • max = a > b ? a : b; 等價於 max = (a > b) ? a : b;(括號可省)
  • ? 和 : 是成對運算符,不可分開
  • 結合方向:右結合

嵌套解析

a > b ? a : c > d ? c : d;
// 右結合理解為:
a > b ? a : (c > d ? c : d);

即:若 a>b 則結果 a;否則結果為 (c>d ? c : d) 的值。

實戰:輸出兩數最大值

#include <stdio.h>
int main() {
    int a, b;
    printf("Input two numbers: ");
    scanf("%d %d", &a, &b);
    printf("max=%d\n", a > b ? a : b);
    return 0;
}

運行結果

Input two numbers: 23 45
max=45

進階用法

1. 作為函數參數

printf("Max: %d\n", a > b ? a : b);

2. 返回值表達式

int max(int a, int b) {
    return a > b ? a : b;
}

3. 避免副作用陷阱

// 危險:副作用重複/遺漏
max = a++ > b ? a++ : b;  // a 可能增 1 或 2 次

// 安全:先計算條件
int cond = a > b;
max = cond ? a : b;

條件運算符 vs if-else 選擇

最佳實踐

  • 保持簡單:單層、無副作用、一行內
  • 複雜邏輯拆分為中間變量或 if-else
  • 宏定義中常用:#define MAX(a,b) ((a)>(b)?(a):(b))(括號防副作用)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
場景推薦理由
簡單賦值/返回值選擇條件運算符簡潔、表達式語境
複雜邏輯、多語句、調試if-else可讀性強、易設置斷點
多條件分支if-else if / switch條件運算符嵌套難讀