c语言中的宏定义使用
#include<stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
int main()
{
int i=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
return 0;
}
此程序为什么输出为:15呀!
[解决办法]
宏是字符串替换 你的程序还差个括号吧((x)<(y)?(x):(y))
[解决办法]
使用宏定义,要记得为每一个宏变量加上括号。最后别忘了给整个宏加上括号。
[解决办法]
你的代码替换了就变成了
10*x<y?x:y;乘法的优先级高,也就是100<15?10:15;
结果当然是15了!~
[解决办法]
原因楼上都说完了。。。