宏定义的作用只是在编译的时候进行简单的字符串替换,而不会考虑具体代码的逻辑运算。所以编译编译的时候是直接把10*MIN(10,15)换成了10* (10)<(15)?(10) : (15)此时先算左边的乘法10*10=100,再来判断100<15是真还是假,结果是假,所以最终整个式子的值是15.10放在后面就是(10)<(15)?(10) : (15)*10,结果就是10.要想得到结果是100,宏定义应该写成#define MIN(x,y) ((x)<(y)?(x) : (y))