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