版权声明:如若转载,请联系作者。 https://blog.csdn.net/liu16659/article/details/88945283
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。