单选题
有以下程序:
#include
#define S(x)x*x
void main()
{
int k-5,j=2;
prinff(“%d,%d\n”,S(k+j+2),S(+k+2));
}
程序的运行结果是( )。
【正确答案】
A
【答案解析】解析:带参数的宏的调用格式:宏名(实参表),替换过程是:用宏调用提供的实参字符串,直接替换宏定义命令行中相应形参字符串,非形参字符保持不变。S(k+j+2)被s换成k+j+2*k+j+2,计算时先计算2:I:k,结果为21;s(j+k+2)被s换成j+k+2*j+k+2,计算时先计算2冰j,结果为18。程序的运行结果是21,18。