问题 单项选择题

有以下程序:
#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。

单项选择题
单项选择题