问题
单项选择题
有如下程序:
#define N 2
#define M N+1
#define NUM 2*M+1
main()
int i;
for(i=1; i<=NUM;i++)printf("%d\n",i);
该程序中的for循环执行的次数是( )。
A.5
B.6
C.7
D.8
答案
参考答案:B
解析: 该题关键要注意在不带参数的宏中对2*M+1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2*N+1+1(千万不要随意给N+1加上括号,使NUM变为 2*(N+1)+1,这就是宏名和变量名之间的区别),再将N代进去,得到NUM的值为6。