跪求顺序运算的问题,要疯掉了!!!

来源:百度知道 编辑:UC知道 时间:2024/07/01 07:47:47
Q1:为什么x=a=1||(b=2)&&(c=3)&&(d=4)的计算结果和x=(a=1)||(b=2)&&(c=3)&&(d=4)的计算结果没差啊?
Q2:难道不用先算括号里的吗?
Q3:难道括号在表达式中都没有用吗?
Q4:是不是所有的表达式都要从最左边开始看啊?
Q5:不用从一开始考虑优先级?

可不可以每个问题依次回答啊?很重要的。

这是用什么语言里写的? 算了不管了, 先试着帮你分析一下看吧:
--------------------------
首先, 暂时按其中的 b=2 是赋值运算来看吧

前一个
x=a=1||(b=2)&&(c=3)&&(d=4)

大得看是个连续赋值运算, 把表达式1||(b=2)&&(c=3)&&(d=4)的值赋给了a, 然后又把a赋给了x

表达式1||(b=2)&&(c=3)&&(d=4)中,把2赋给了b,3赋给了c,4赋给了d, 所以实质的结果相当于: 1||2&&3&&4, 其值是1.
也就是说x=1,a=1.

后一句:
x=(a=1)||(b=2)&&(c=3)&&(d=4)

是把表达式(a=1)||(b=2)&&(c=3)&&(d=4)的值赋给了x, 而这个表达式相当于是:1||2&&3&&4, 其值为1.
所以, x=1, 至于a,b,c,d是分别给赋值1,2,3,4的.

所以, 从总结果看, 两者的结果是完全一样的, 但实质的运算过程并不相同, 仍然是按各自的优先级顺序进行的.

------------

再按b=2是比较运算来理解:

第一句:
x=a=1||(b=2)&&(c=3)&&(d=4)

a=1处没有括号,仍然是连续赋值运算.
由于中间是或(||)的关系,所以右边的(b=2)&&(c=3)&&(d=4)取值关系不大, 什么结果, 表达式1||(b=2)&&(c=3)&&(d=4)的值都是真(可以认为是1), 所以a=true,x=true.

后一句:
x=(a=1)||(b=2)&&(c=3)&&(d=4)
把表达式(a=1)||(b=2)&&(c=3)&&(d=4)的值赋给了x, 由于是或的关系, 无论||两边哪个条件为真, 其结果都会是真.

那么, 既然你说两种写法结果一样, 相信其结果是真值了. 呵呵~~~

--------------------