#include <iostream>
using namespace std;
#define A 3.5
#define S(b) A*b*b
int main()
{
int x=1,y=2;
printf("%4.1f\n",S(x+y));
}
在C/C++中,下面这段代码经常有人搞错,错误地得出 31.5,而正确输出应为 7.5。
实际上,上面的代码等价于以下代码:
#include <iostream>
using namespace std;
#define A 3.5
#define S(b) A*b*b
int main()
{
int x=1,y=2;
printf("%4.1f\n",3.5*x+y*x+y);
}
显然,宏定义只是文本的简单替换,程序运行时先将文本替换,在进行计算。