填空题
以下程序的输出结果是{{U}} 【19】 {{/U}}。
#include <stdio.h>
#define M 5
#define N M+M
main()
{ int k;
k;N*N*5; printf("%d/n"k);
}
【正确答案】
1、55
【答案解析】[解析] 宏替换不是函数调用,所以不能因为M被定义为5,而N被定义为M+M而武断地认为N的值就是5+5=10。宏替换就是简单的字符串替换,以本题为例:因为N被定义为M+M,所以k=N*N*5;语句展开后为k=M+M*M+M*5;。又因为M被定义为5,所以再展开后为k=5+5*5+5*5;。现在不难计算出,这个表达式的结果为k=55。故最终输出结果是55。