为啥是15而不是100

img


*不是乘号嘛为啥不是100是15,有没有人告诉我一下我错哪了。

  1. 错误就错误在 #define MIN(x,y) (x)<(y)?(x):(y)
    你把MIN整个函数替换下,你就能看明白了
    k = 10 * (10) < (15) ? (10) : (15);
    根据运算符的优先级,先计算10*10 ,再计算100<15?10:15.100<15为false,所以最终等于15
  2. 把#define MIN(x,y) ((x)<(y)?(x):(y)) 多带个括号,你的答案就是100了。

10*10 < 15 ? 10:15
你说等于多少

#就是是实现字符串替换。你那个就是k=10*10 < 15 ? 10:15,因此k=15

下面是其他网友定义的宏函数,比你的多了个括号,也就是保护了max、min运算的优先级。
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))

要是我没猜错的话,这不是课本上拿来举反例的?接着往下看两行不行?