C++ 中define的使用详解

版权声明:如若转载,请联系作者。 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。

猜你喜欢

转载自blog.csdn.net/liu16659/article/details/88945283