设为首页 加入收藏

TOP

关于C++中的#define
2014-11-24 02:50:53 来源: 作者: 【 】 浏览:2
Tags:关于 #define

#include
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与运算符优先级没有关系的吧,起码我觉得不应该是这个说法...


推荐阅读:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Socket网络编程中的1448问题 下一篇Python关于时间方面的处理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: