有以下程序: #include #define S(x)x*x main() {int k=5,j=2; printf("%d,%d\n",S(k+j+2),S(j+k+2)); } 程序的运行结果是

admin2021-04-28  18

问题 有以下程序:
    #include
    #define S(x)x*x
    main()
    {int k=5,j=2;
    printf("%d,%d\n",S(k+j+2),S(j+k+2));
    }
    程序的运行结果是(    )。

选项 A、21,18
B、81,81
C、21,21
D、18,18

答案A

解析 带参数的宏的替换过程是,用宏调用提供的实参字符串直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。S(k+j+2)被置换成k+j+2*k+j+2,计算时先计算2*k,结果为21;S(j+k+2)被置换成j+k+2*j+k+2,计算时先计算2*j,结果为18。程序的运行结果是21,18。
转载请注明原文地址:https://jikaoti.com/ti/Lzz0FFFM
0

最新回复(0)