z309844110 发表于 2018-1-31 12:38:43

C语言求助

#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);

printf("%d\n",k);
}


为什么结果是15,怎么看都是100呀看了好久实在想不出来求大佬赐教

BngThea 发表于 2018-1-31 12:45:30

根据你的代码
k=10*MIN(i,j);
等价于
k = 10 * i < j ? i : j;
所以k为j

orino 发表于 2018-1-31 12:46:13

define 转换后k=10*(i)<(j)?(i):(j)
逻辑本来就有问题了,慎用define,要用就完全用括号包起来#define MIN(x,y) ((x)<(y)?(x):(y))

z309844110 发表于 2018-1-31 13:20:47

是这么回事受教了
页: [1]
查看完整版本: C语言求助