[C 的那些眉角]巨集函式的副作用 — MAX(a++, b++) 會怎樣

有一次 code review,同事寫了這樣一行:

int result = MAX(sensor_read(), threshold);

我看了一眼沒說什麼,但心裡其實有點毛。

MAX 是怎麼定義的?他說是標準的那種:

#define MAX(a, b) ((a) > (b) ? (a) : (b))

sensor_read() 會被呼叫幾次?他楞了一下。答案是:不一定,可能是一次,也可能是兩次

閱讀全文