应该怎么理解 真的想不明白为啥是15 下周就要考了 真的很焦虑 希望有人帮帮我 非常谢谢
这是宏展开的问题
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);
}