为什么最后答案会是15,不应该是100吗

#include "stdio.h"
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{    int i,j,k;
    i=10;j=15;
    k=10*MIN(i,j);
    printf("%d\n",k);
    getchar();
 } 

为什么最后答案会是15,不应该是100吗

  • k的表达式,会替换成如下:
10 * (10) < (15) ? (10) : (15) 
// 计算按运算符优先级,先计算(),再计算 * ,再比较 < , 再进行三目运算
100 < 15 ? 10 : 15
// 100 < 15 不成立,结果就是  15

img