若有宏定义:#define A_RECT(W,H)W*H和以下程序段  int x=5,y=6,area1,area2;  area1=A_RECT((x-1),(y+1));  area2=A_RECT(x+3,y-1);  执行上述程序段后,变量are

admin2022-04-01  36

问题 若有宏定义:#define A_RECT(W,H)W*H和以下程序段
 int x=5,y=6,area1,area2;
 area1=A_RECT((x-1),(y+1));
 area2=A_RECT(x+3,y-1);
 执行上述程序段后,变量area1和area2的值分别是(          )。

选项 A、0 22
B、28 40
C、28 22
D、0 40

答案C

解析 带参数的宏定义的替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符串保持不变,所以题意中area1=A_RECT((x-1),(y+1));宏替换后为:area1=(x-1)*(y+1);area2=A_RECT(x+3,y-1);宏替换后为:area2=x+3*y-1;所以area1=4*7=28;area2=5+3*6-1=22;本题答案为C。
转载请注明原文地址:https://jikaoti.com/ti/U8d0FFFM
0

最新回复(0)