问题
单项选择题
请选出以下程序段的输出结果 ( )。 #include <iostream> using namespace std; #define MIN(x,y) (x)<(y) (x) : (y) int main () {int i,j,k;i=10; j=15;k=10*MIN(i,j);cout<<k<<end1;return 0; }
A.15
B.100
C.10
D.150
答案
参考答案:A
解析: 本题考查对宏定义的掌握程度。本题最常见的错误就是想当然地先把i、 j代入MIN(i,j),得到值10,然后在计算表达式k=10*10=100,得到答案100。其实不然,在使用宏替换时,应该充分理解宏替换仅是简单地用所说明的字符串来替代对应的标识符。所以,应当先把宏定义代入到表达式k=10*MIN(i,j)中,得到:k =10*10<1510:15,再按照运算符的优先级和结合性计算,最后得到k=15。