一个输出a,b,c中最大值的C程序,为什么我输入666,111,10时输出还是10?
#include <stdio.h>;
int a,b,c,d;
int main()
{
int max(int x, int y,int z);
scanf("%d,%d,%d",&a,&b,&c);
max(a,b,c);
c=max(a,b,c);
printf("max=%d\n",d);
return 0;
}
int max(int x, int y,int z)
{
if(a>b>=c)
{
d=a;
}
else if(b>a>=c)
{
d=b;
}
else
{
d=c;
}
return (d);
}
这样就行了。。。可是为什么啊
#include <stdio.h>;
int a,b,c,d;
int main()
{
int max(int x, int y,int z);
scanf("%d,%d,%d",&a,&b,&c);
max(a,b,c);
c=max(a,b,c);
printf("max=%d\n",d);
return 0;
}
int max(int x, int y,int z)
{
if(a>b&a>c)
{
d=a;
}
else if(b>a&b>c)
{
d=b;
}
else
{
d=c;
}
return (d);
}
if(a>b){
d=a;
}else{
d=b;
}
if(d>c){
d=d;
}else{
d=c;
}
println("max=%d\n",d);
连续运算的表达式,要判断它的优先级和结合性。你代码上的比较符都是从左到右的结合性。1.(a>b>=c) ,判断了a>b为真后结果(1),再用1跟c作比较,(1 >= c)显然不成立,调到下一个;2.(b>a>=c), 同理,(0 >= c)也不成立;进入else (d=c;)最终结果 d 等于c(10)
if (a>b) max1=a; else max1=b;
if (max1>c) max=max1;
else max=c
if (a>b) max1=a; else max1=b;//先求出a和b中的最大值
if (max1>c) max=max1;//再与另一个比较
else max=c