#include <iostream>
using namespace std;
#define ADD(x, y) x+y//试卷上是减号,本人觉得是加号
int main()
{
int m = 3;
int n = 4;
m += m * ADD(n, m);
cout << m << endl;
return 0;
}
请看上面的代码,你觉得m最后会输出?呢。
其实在C++里,#define宏定义
#define ADD(x, y) x+y
这种方式最后在编译的时,仅仅做的是
代码替换,这就像是语句
m += m * ADD(n, m);
其实就会被编译为:
m += m *n+m;
之后计算m*n=12,然后+m=15,然后m+=15(也就是m=m+15)
所以最后结果为18........
【PS: 】貌似跟#define与运算符优先级没有关系的吧,起码我觉得不应该是这个说法...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)