C语言宏定义看程序写结果

来源:百度知道 编辑:UC知道 时间:2024/05/15 04:21:32
#include <stdio.h>
#define MIN(x,y) (x)<(y)?(x):(y)
main()
{ int i,j,k;
i=5;j=30;
k=100*MIN(i,j);
printf("%d\n",k);}
运行的结果不应该是5*100=500吗?为什么我在TURBO C中运行的结果是30呢?请高手指教一下,谢谢!

宏定义只是一般的展开,你这样的写法
k=100*MIN(i,j); 就等于k=100*(i)<(j)?(i):(j);
100*5<30?5:30;结果自然是30啦
你应该这样定义,加上括号就没错啦
#define MIN(x,y) ((x)<(y)?(x):(y))

k=100*MIN(i,j)=100*(i)<(j)?(i):(j)=500<30?5:30=30