<>C++中define的使用详解

<>1.代码如下
#include<cstdio> #include<iostream> #define max(a,b) ((a)>(b)? (a): (b)) using
namespace std; int main(){ int a = 2; int b = 2; int n = max(a,b); printf("n =
%d\n",n); int m = max((++a),b); printf("a= %d ,b = %d, m = %d",a,b,m); return 0;
}
<>2.执行结果

这会得到什么样的执行结果呢?大多数人都会觉得这个结果是:3 2 3。但是悲伤的是,结果如下:

<>3.原因

带着上面的疑惑,我们再看define的作用,define是一个宏定义操作。也就是说,对于我们定义的
#define max(a,b) ((a)>(b)? (a): (b))
如果我们调用int m = max((++a),b);则会替换成((++a)>(b)? (++a): (b))。于是得到的是加了两次的a。

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信