运算符的优先级问题,而双等号==的优先级是大于单等号=的,所以这个式子是先进行b和c的==运算,然后结果与a再进行=运算,总结一下就是先看下b==c的结果,结果是1或者0,然后将这个值赋值给a。
对于你这个题,毫无疑问,a=b==c结果是0,你从哪跑的输出,天王老子来了也是0。
有帮助的话采纳一下哦!
很有意思的一道题!我刚试着运行了一遍,这个不单单是赋值号和相等号之间优先级的问题。我单独输出 a=b==c时,结果是0,但是按照题主这么输出,结果是 3 3 0 0,尝试了好多遍都是这个结果,如果按照这四个语句依次单独运行,结果应该是3 1 0 1,所以推测这个应该是和语句结束及赋值,相等三个有关,或者是输出时系统的顺序有关?,然后我就实验了一下,将四个输出结果中的,第一个式子和第二个式子稍后换位置输出,输出结果是1 1 0 0,不知道其他编译器是不是这样。我用的是vim。
考虑到出现这种结果,可能是与编译器运行输出语句中不同关系式的顺序有关吧?
本来赋值号和相等号碰撞就会发生很奇妙的东西?
再碰上prindf,实在是怪啊。