关于C++中的#define
关于C++中的#define
#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与运算符优先级没有关系的吧,起码我觉得不应该是这个说法...
推荐阅读:
C++的输出精度控制
C++成员函数的存储方式
C++集成开发环境 Code::Blocks
C++中几个预定义变量的介绍
将Emacs配置成一个C/C++的IDE编程环境
评论暂时关闭