
*不是乘号嘛为啥不是100是15,有没有人告诉我一下我错哪了。
- 错误就错误在 #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 - 把#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))
要是我没猜错的话,这不是课本上拿来举反例的?接着往下看两行不行?