问题 填空题

以下程序运行后的输出结果是______。
#define S(x) 4*X*x+1
main()
int i=6,j=8;
printf("%d\n",S(i+i));

答案

参考答案:81

解析: ,解此类题一定要注意宏替换与函数调用的区别。宏替换是字面上的,在编译期间就完成了,它只是将实参字符串替换蚌宏中形参出现的位置,得到的新串来替换掉宏调用.。而函数是将实参先计算好,然后将值赋给形参,再执行函数体,整个过程在程序运行时发生。所以本题的宏调用s(1+1)将被替换成表达式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本题输出81。

单项选择题
单项选择题