我目前正在學習C++,並且喜歡閱讀和探索我在互聯網上找到的程序。在C++中遞增 - 幫助理解示例程序輸出
我發現這個例子的C++代碼,這給「4大於2」作爲輸出,但我想不通爲什麼:
#include <stdio.h>
#define MAX(a, b) (a > b) ? (a) : (b)
int main()
{
int x = 2, y = 2;
if(MAX(++x, y) == x)
{
printf(" %d is greater than %d ", x, y);
}
return 0;
}
我不明白的是:如果你看一下該段狀態爲
if(MAX(++x, y) == x)
它應該增加X變量1,然後調用MAX;那時X應該是3.相反,當你編譯它時,輸出如前所述。
我已經做了++運算符是如何工作的(Incrementing in C++),但我無論如何也得解決一些研究。你能解釋一下爲什麼會發生這種情況嗎?
在此先感謝您的幫助。
HTTP://coliru.stacked-crooked
此外,本傑明林德利所指出的,你如果你想讓它最大的兩個值返回在這種情況下,需要圍繞宏觀額外的括號。 com/a/d7074b79ca3dd7ca – chris
http://stackoverflow.com/questions/319452/are-all-macros-evil - 如果我是你,我會遠離宏的C++儘可能多。它更好地使用模板和內聯。 – Gasim