我目前正在学习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