#define MIN(x,y) (x)<(y)?(x):(y)
main()
{int i=10,j=12,k;
k=10*MIN(i,j);
printf("%d",k);
}
因为宏替代后是这样的:
k = 10 * (i) < (j) ? (i):(j);
这里比较的是10*i和j的大小,也就是100和12的大小,显然100更大,所以就是k = j,因此k值为12
#include<stdio.h>
#define MIN(x,y) ((x)<(y)?(x):(y))
main()
{
int i = 10, j = 12, k;
k = 10 * MIN(i, j);
#if 0
这里被展开成k = 10 * (x) < (y) ? (x) : (y);
相当于k = 10 * 10 < 12 ? 10 : 12;
很明显k = 12
想答案正确看上面添加括号
#endif
printf("%d", k);
}