这道题没那么简单的,有一个宏替换的陷阱在里面噢!
宏,是单纯的文本替换的,而不是先计算出宏的值,然后再与其它变量参与运算。
也就是说「k = 10 * MIN(i,j);」用宏替换之后是下面这样的,
k = 10 * (i)<(j)?(i):(j);
而运算符的优先级上,乘法符号 * 是比小于符号 < 的优先级高的,所以右边的表达式里,是先计算 10 * (i) ,然后再比较大小的,也就是变成了 「20 < 21 ? 2 : 21;」。
显而易见,最后 k 被赋予的值是 2 。
所以,A 选项才是正确的。
如有帮助,烦请点采纳,谢谢!