55.若有宏定义如下:
#define X 5
#define Y X+1
#define Z Y*X/2
则执行以下printf语句后,输出结果是____D___.
int a;a=Y;
printf("%d\n",Z);
printf("%d\n",--a);
a)7 b)12 c)12 d)7
6 6 5 5
#include <stdio.h>
#define MUL(x,y) (x)*y
main()
{
int a=3,b=4,c;
c=MUL(a++,b++);
printf("%d\n",c);
}
上面程序的输出结果是___A_______.
a)12 b)15 c)20 d) 16
//说说计算过程,谢谢!
參考答案:1.
/*#define Z Y*X/2没有加括号#define Z (Y)*X/2 结果就不同了*/
Z =Y*X/2
=X+1*X/2
=5+1*5/2
=5+2
=7
--a=--X+1
=4+1
=5
2.c=MUL(a++,b++);
=(a)*y
=3*4
=12
如果是
c=MUL(++a,++b)
则=4*5
=20