为什么结果是 7 帮忙分析一下
#include "iostream.h"
#define sq(x) x*x
int main()
{ cout<<"1+3="<<sq(1+3)<<endl;
return 0;
}
[解决办法]
预编译器可不会把x视为一个数字,只会把它视为一个表达式
如楼上所言,1+3*1+3
[解决办法]
宏定义就是字符替换。在预处理期间以字符形式替换掉。那么你的那个替换为
#define sq(x) x*x
int main()
{ cout<<"1+3="<<1+3*1+3<<endl;
return 0;
}
你说这等于7嘛?
[解决办法]
宏定义的陷阱没搞清楚
[解决办法]
#define sq(x) ((x)*(x))这样就好了~~