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