>是二元运算,a>b结果是1或0,计算机用一个机器字保存,x>y>z相当于(x>y)>z,就是拿z与x>y的结果(1或0)进行比较了
给你个宏吧
typedef unsigned int ui ;
#define max3(a ,b ,c) ((ui) (a) > (ui) (b) ? ((ui) (a) > (ui) (c) ? (a) : (c)) : ((ui) (b) > (ui) (c) ? (b) : (c)))
你可以用d = max3 (a ,b ,c) ;完成你的目的
#include
int max(int x, int y, int z);
int main( )
{
int a, b, c, d;
scanf("%d%d%d", &a, &b, &c);
d = max(a, b, c);
printf("max=%d\n", d);
return 0;
}
int max(int x, int y, int z)
{
int h;
if(x > y && x > z)h = x;
else if(y > x && y > z)h = y;
else if(z > y && z > x)h = z;
return(h);
}
int max(int x,int y,int z)
{
int h;
if((x>y)&&(x>z))h=x;
//else h≠x;
else if((y>x)&&(y>z))h=y;
//else h≠y;
else if((z>y)&&(z>x))h=z;
return(h);
}
c语言是不存在x>y>z的连续判断的,只能像上面那样分开来算。max函数用上面的函数替换下
int max(int x,int y,int z)
{
int h;
h = x > y ? x : y;
h = h > z ? h : z;
return h;
}
或者
int max(int x,int y,int z)
{
return x > (y > z ? y : z) ? x : (y > z ? y : z);
}
总体:
#include
int max(int x,int y,int z)
{
return x > (y > z ? y : z) ? x : (y > z ? y : z);
}
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("MAX = %d\n",max(a,b,c));
return 0;
}