C语言问题:这个值不是100么,怎么变成15

来源:百度知道 编辑:UC知道 时间:2024/06/05 16:25:40
#include <stdio.h>
#define min(x,y) (x)<(y)?(x):(y)
main()
{
int i=10,j=15,k=10;
k=10*min(i,j);
printf("%d",k);

}

如题,k怎么变成15,应该是10*10啊~~~

k=10*min(i,j);
上面这一句被宏替代后变成
k=10*(i)<(j)?(i):(j);
也就是100和15中取最小的
当然是15

#define min(x,y) (x)<(y)?(x):(y)
要加大括号
#define min(x,y) ((x)<(y)?(x):(y))

不然 k=10*min(i,j);
为k=10*(i)<(j)?(i):(j);

define 是不加处理的直接替换

define 是不加处理的直接替换
长见识了

宏只是简单替换,不能理解为函数啊...

简单的把宏值替换宏名就可以看出结果了.

学习拉