分析下列程序的结果
#include<iostream.h>
#define min(x,y) (x)<(y)?(x):(y)
void main()
{
int i=10,j=15,k;
k=10*min(i,j);
cout<<k<<endl;
}
这个月的第二次看到这段代码
结果是15
#define min(x,y) ((x)<(y)?(x):(y))
才能得到100
变成了
k=10*(x)<(y)?(x):(y)
k= 10*10<15?10:15
k=10*min(i,j);
实际上是
k=10*(i)<(j)?(i):(j);
则k=10;
k=10*(i)<(j)?(i):(j);
k=10*(10)<(15)?(10):(15);
k=100<15?10:15;
k=15;
是啊,所以C++中一般不用宏定义的方式来定义这种函数了,可以用内联函数代替啊,不过,可能考试还是要考这些哦!!!