怎么 也 不会是 8 呀,就算按你这个也是9,不过这不是你想的这样,
宏定义 要展开之后,再计算
所以 a = M(m + n) = 2 + 1 * 3 = 2 + 3 = 5
最后输出 a--,因为 --在后, a-- = 5, 所以打印 5
因为预处理器那里的变量x没有加括号,导致程序a=M(m+n)预处理后变成a=m+n*x, 而不是a=(m+n)*x
“#define M(x)x*3” 这个是宏定义,不能理解为函数定义。
a=M(m+n);
展开后是
a=m+n*3
即
a=2+1*3
此时a=5。后续你就明白了吧?
#define M(x)x*3
a=M(m+n);
这个属于是 宏展开错误,a=m+n*3 =2+1*3 = 5
a-- 是语句执行后调用,--a是语句执行前调用,这里是 cout << 先打印之后才 --
你可以搜一下前++ 和 后++ 的不同。
如果有帮助麻烦点个采纳,谢谢~~
输入 5 个单词,将它们按从大到小的顺序排列后输出。