问题
单项选择题
有以下程序:
#include <stdio.h>
#define N 5
#define M N+1
#define f(x) (x*M)
main()
int i1,i2;
i1=f(2);
i2=f(1+1);
printf("%d%d\n",i1,i2);
程序的运行结果是( )。
A.12 12
B.11 7
C.11 11
D.12 7
答案
参考答案:B
解析: 题目中第1条要替换的语句i1=f(2);展开后是i1=(2*M);再展开为i1=(2*N+1);最后展开为i1=(2*5/1),结果使i1=11。而第2条语句i2=f(1+1);展开后为i2=(1+1*M);再展开为i2= (1+1*N+1);最后展开为i2=(1+1*5+1),结果使i2=7。故应该选择B。