[C] 不用條件判斷式求得 2 數的最大值

以下 C 語言程式碼可做到不用條件判斷式取得 2 數的最大值:



為了便於說明, 假設 int 為 32-bit

當 a > b 時, (a - b) >> 31 的結果是 0, 因此第 4 行等效於 a = a - 0

當 a < b 時, (a - b) >> 31 的結果是 0xffffffff (sign-bit 填滿了 32 個 bits), 因此第 4 行等效於 a = a - (a - b) 亦即 a = b