为什么是15真的想不明白

应该怎么理解 真的想不明白为啥是15 下周就要考了 真的很焦虑 希望有人帮帮我 非常谢谢

img

这是宏展开的问题
10 * MIN(i,j)展开后是
10 * (i) < (j) ? (i) : (j)
10 * (i)先执行,所以实际是 100 < 15?10:15,结果自然是15了

在这里MIN是一个表达式,不直接返回结果,只是替换,可参考宏替换相关内容,楼上说的也是对的

虽然我也不是很懂,但你可以这么理解: k = 10 * MIN(i, j);等价于:k = 10 * (i) < (j) ? (i) : (j);

#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);
    k = 10 * (i) < (j) ? (i) : (j);
    printf("%d\n", k);
}