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

C語言三元運算符(條件運算符)詳解:a
     編輯:C 語言問答

語法形式

condition ? expression_true : expression_false
  • condition:任意標量表達式,非 0 為真,0 為假。
  • expression_true:條件為真時的結果值。
  • expression_false:條件為假時的結果值。
  • 整個表達式的類型為兩表達式經常用算術轉換後的公共類型。

優先級與結合性

  • 優先級:高於賦值運算符,低於邏輯或 ||。
  • 結合性:右結合(右到左)。

因此 c = a < b ? a : b; 等價於 c = (a < b ? a : b);,先求三元表達式的值,再賦值給 c。

經典用法:求最小值/最大值

int min = (a < b) ? a : b;
int max = (a > b) ? a : b;

嵌套示例:三數最小值

int min3 = (a < b) ? ((a < c) ? a : c) : ((b < c) ? b : c);
// 建議拆行或用輔助宏/函數提升可讀性
#define MIN2(x,y) ((x)<(y)?(x):(y))
int min3 = MIN2(MIN2(a,b), c);

副作用陷阱

// 錯誤:a++ 可能被執行兩次或零次,行為未定義
int x = (flag) ? a++ : a++; 

// 正確:將副作用移出三元運算符
if (flag) x = a++;
else x = a++;

最佳實踐

  • 表達式簡短、無副作用、邏輯清晰時使用(如取較小值、條件初始化)。
  • 複雜邏輯、多副作用、需調試時,改用 if-else 塊。
  1. 上一篇文章:
  2. 下一篇文章:

Copyright © 程式碼之家 All Rights Reserved