if判断的小问题,快者加分!

来源:百度知道 编辑:UC知道 时间:2024/06/30 02:13:52
如果if(a==b&&b==c)
写成if(a==b==c)运行时就结果不同,为什么?

运算符的结合方式和优先级问题
if(a==b&&b==c)中,&&运算符优先级低于==运算符,因此等于是
if((a==b)&&(b==c))
而后面的 if(a==b==c)明显不同,因为a如果和b相等,得出的结果是1,相当于
if(1==c)

明白了么?
c中三个数相等只能两两比较,不能连等

a==b==c
先执行a==b的判断,如果a,b相等则结果为1,否则为0,然后执行1(或者0)与c是否相等的判断。所以结果当然不同。
比如a,b,c都为2,第一种结果当然是true,但是第二种就是先返回(a==b)的结果1,然后判断1与c是否相等,结果就是false了。

a==b是赋值语句,不是等于的意思!
比如A=5。不是指A=5,而是指把5赋给了A
所以A=A+5,就可以是把5和原A的值加起来在赋给A!
所以IF(A==B&&B==C)
当然与IF(a==b==c)运行结果不一样了!

算完了A==B就不算了

0

if ( a == b == c) 和 if ( a == (b == c))等价
a == b得到的是一个布尔值0或1
再用它和c比就没有什么意义了