在c语言中a==b==c与a==b,b==c有区别吗?

Python015

在c语言中a==b==c与a==b,b==c有区别吗?,第1张

这个太有区别了!

a==b==c 是一个关系表达式,由于运算符"=="具有左结合性,故其运算顺序是:

((a==b) ==c )

若a=5,b=5,c=5,则a==b的值为1,而1==c的结果为0

a==b,b==c是分别判断a和b以及b和c关系运算

补充,楼上说a==b==c是先执行b==c是错误的,因为C语言中只有赋值运算符和单目运算符具有右结合性,故运算对象b必然先于左侧的"=="结合。

再次补充:这不是赋值的问题,没有赋值运算符,而是关系运算

“=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符;

=赋值==等于运算说a=b=c,表达式运行a值赋给b、c运行完abc值相等;

a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值;

运算b==c,若b与c相等,那么得出的值为1。

扩展资料

c语言中a=b--<=a||ab!=c的计算

左边:(a=b--)<=a;

计算b--的值,b--的值为2,得到这个值也就让b的值变成了1,赋值给a后a的值为2,(a=b--)的值也就是a的值为2,2<=2成立,所以左边为真;

右边:(a+b)!=c,a+b的值为3,c的值为3,所以右边为假真||假的结果为真;

b--使b的值变成了1;

a=b--的赋值使a的值变成了2;