C语言a=b==c怎么运算的

如题所述

其实就是运算符优先级问题

=运算符优先级很低,
先进行b==c运算,
判断b是否等于c,
是,结果为1,
不是,结果为0,

后进行=的运算,
把b==c的运算结果(1或0)赋给a,
所以a结果是1或0

对于a=b=c;
=是从右至左的运算符,
所以先进行b=c,把c值赋给b,
再进行a=b,把b的值赋给a。追问

a=b=c是这样算的吗?
为什么我令a=6,b=4,c=4,输出a=b=c,b=a=c,c=a=b都是6?

追答

难道是各个系统之间的差异,我调试结果a=4,b=4,c=4

追问

纠结啊!!!搞不懂!!

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-30

    C语言运算讲究运算次序,各种不同的运算符有不同的优先级

    ==的优先级高于=,所以先对==进行运算,再对=运算

    综上,这个式子相当于先算b==c,若二者相等,则将1赋值给a,否则将0赋值给a

本回答被网友采纳
第2个回答  2012-05-20
先判断b是否等于c,如果相等则结果为1,否则为0;再将0或1赋值给a追问

那a=b=c怎么运算呢?

第3个回答  2012-07-25
你好,a=b=c; 这个语句在不同的系统中会有不同的运算顺序,即,从左边依次开始赋值或从右边依次开始赋值。
第4个回答  2012-05-20
=号是赋值的意思,==是这个值是多少的意思,或者判断相不相等的意思追问

如a=1,b=2,c=3,结果是多少?

追答

结果是0,这是判断吗?

追问

是这样的
printf("%d",a=b==c)

追答

这是个赋值语句,就是3咯,应该,我现在有不死很清楚了

相似回答