MIN(i,j)的结果是10,那10*10为100,运行却是15?

#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
int main(){
int i=10,j=15;
printf("%d", 10*MIN(i,j));
}

宏定义会直接替换对应代码字段

你的代码会变成

#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
int main(){
int i=10,j=15;
printf("%d", 10*(i)<(j)?(i):(j));
}

宏定义不是函数,你把宏定义和函数搞混了
函数会先执行,然后返回值,把值继续参与运算
而宏定义就是简单替换字符串