我知道操作員如何工作,但我不明白下面代碼中的第二種情況如何給出1作爲結果。C中的決策 - :操作員示例
#define MIN(a,b) a<b ? a:b
int x = MIN(1,2); //case 1, output is 1
int x = MIN(1,1+1); // case 2
不應該編譯器看到這個(情況2)爲「是1 < 1 + 1?」,我認爲應該是「是1 < 1?否它是不是」,表達式3被執行,且我們得到:「b」= 1 + 1 = 2。這是因爲上面的宏中a和b周圍沒有括號,或者因爲我遵循自己的規則並感到失落?請幫助....
另外,你如何解釋這種情況:
int x = MIN(1,2) + 1; //should we consider the "1" on the right?
使用括號中的語句(a,b)(((a)<(b))?(a):(b))' –