<>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。

技术
©2020 ioDraw All rights reserved
JS基础重点知识实验总结(全)error: (-215:Assertion failed)解决方案逆向工程核心原理笔记(一)——Hello World-1特征工程详解PHP中的die、exit、return特朗普的"VIP疗法":正接受一种尚未获批的药物治疗HashMap实现LRU(最近最少使用)缓存更新算法三分钟看懂神经网络机器翻译SK海力士全球首发DDR5内存:频率冲上5600MHz、容量可达256GB日经:索尼和铠侠正积极申请华为供货许可