宏定义的本质
宏定义的本质:
字符替换,没有类型转换,一定记住
来看一个例子:
#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

浙公网安备 33010602011771号