这个能算1,2,3最大值=5
为啥算不了41,485,340的最大两个和,就出不来东西
q&e<w想干啥呢?完全不知道你想判断啥啊。&是位与操作符,不是并且的意思,那得用&&。即使改成q&&e<w也不对的,必须分别判断
改成
if(q<w && e<w)
printf("%d",w);
后面两个类似修改。
q&e<w是在干什么呢
&是算术与运算,不是逻辑与
你这代码完全不是数大数小的问题
你换一组数,比如4,5,6,结果肯定也是不对的
我猜你是想写if(q<w && e<w)
你这缺的代码有点多啊,有点难猜
&是与运算,这怎么比大小呢?
#include <stdio.h>
int main(){
int x,y,z,q,w,e,m;
scanf("%d %d %d",&x,&y,&z);
q=x+y;
w=x+z;
e=y+z;
if(q!=NULL&e<w)
printf("%d",w);
if(q!=NULL&w<e)
printf("%d",e);
if(w!=NULL&e<q)
printf("%d",q);
return 0;
}
改成这样,不管什么数都可以出来!
“&”代表与,参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1。即:两位同时为“1”,结果才为“1”,否则为0。
所以完整的写出q!=NULL才更好的符合编译器判断出它为1。
你上面的那个代码,我进行了断点测试,发现都是卡在q的判断上去了,我只能猜测,if(q)编译器判断不出q为真(也就是为1)!