宏定义的本质

宏定义的本质:

字符替换,没有类型转换,一定记住

来看一个例子:

#include<bits/stdc++.h>
using namespace std;

#define AREA(a,b) a+b

int main()
{
	int s=AREA(3,4)*AREA(3,4);
	cout << s << endl;
	return 0;
}

  请问输出答案是多少?

你可能会说是49,上当了兄弟

答案是19,都说了是字符替换所以

AREA(3,4) 并不是返回一个答案而是一个字符替换 3+4
那么
s=AREA(3,4)*AREA(3,4) 等价于 s=3+4*3+4
所以结果是19
posted @ 2019-11-23 19:07  ChunhaoMo  阅读(360)  评论(0编辑  收藏  举报