Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 关于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++的输出精度控制 http://www.linuxidc.com/Linux/2013-08/88691.htmC++成员函数的存储方式 http://www.linuxidc.com/Linux/2013-07/87901.htmC++集成开发环境 Code::Blocks  http://www.linuxidc.com/Linux/2013-07/88000.htmC++中几个预定义变量的介绍 http://www.linuxidc.com/Linux/2013-07/87628.htm将Emacs配置成一个C/C++的IDE编程环境 http://www.linuxidc.com/Linux/2013-07/87626.htm