condition ? 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 塊。