#define SUB(a) (a)-(a)   main()   { int a=2,b=3,c=5,d;

d=SUB(a+b)*c;
  printf("%d\n",d);
  }
求解题的过程和答案

d=SUB(A+B)*C //a=a+b
d=(a+b)-(a+b)*c //没有括号把前面括起来,因为这是define定义的宏的特点
d=5-5*5=-20
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-29
最关键的是你的宏定义:
#define SUB(a) (a)-(a)

在编译时这一句:
d=SUB(a+b)*c;
实际被展开成了这样:
d=(a+b)-(a+b)*c;

如果你想要得到你预期的结果,那你需要修改宏,把结果也用括号包起来:
#define SUB(a) ((a)-(a))