1.1问题:
执行下列程序:
A.19 B.30 C.1 D.23
1.2.解答:
#define 宏定义只是替换,MA(i,i+1)替换成x = i,y = i + 1。执行 x * y == i * i + 1(注意此处i + 1没有括号)。
所以结果是26,最终结果是19
2.1.类似问题:
下面程序运行结果是 ______________ __#include<stdio.h> #define sum(a,b,c) a+b+c int main() { int i = 3; int j = 2; printf("%d\n",i*sum(i,(i+j),j)); return 0; }
2.2.解答:
i*sum(i,(i+j),j) -- #define sum(a,b,c) a+b+c--宏定义
i*sum(i,(i+j),j) -- a=i b=(i+j) c=j -- a=3 b=(3+2)=5 (括号) c=2 -- 3 * 3 +5+2=16
故:16
注意点:#define 宏定义只是替换!!!
要注意括号及运算顺序-