若有宏定义:#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-10-24  24

问题 若有宏定义:#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

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

相关试题推荐
最新回复(0)