Java 中这个复合赋值的求值顺序是什么?
What's the order of evaluation with this compound assignment in Java?
ListNode odd = head;
ListNode even = head.next;
odd = odd.next = even.next;
even = even.next = odd.next;
用这行:odd = odd.next = even.next;
是 even.next
分配给 odd.next
然后 odd.next
分配给 odd
?或者 odd.next
分配给 odd
然后 even.next
分配给 odd.next
?
赋值是右结合。这意味着语句被解释为:
odd = (odd.next = even.next);
这与许多运营商不同。例如减法,1 - 2 - 3
是 (1 - 2) - 3
而不是 1 - (2 - 3)
.
Java 对 = assignemnts
具有从右到左的结合性
请注意,不同的运算符有不同的优先级和结合性。值得一读:https://www.w3adda.com/java-tutorial/java-operator-precedence-and-associativity
...或为完全清楚起见使用括号
ListNode odd = head;
ListNode even = head.next;
odd = odd.next = even.next;
even = even.next = odd.next;
用这行:odd = odd.next = even.next;
是 even.next
分配给 odd.next
然后 odd.next
分配给 odd
?或者 odd.next
分配给 odd
然后 even.next
分配给 odd.next
?
赋值是右结合。这意味着语句被解释为:
odd = (odd.next = even.next);
这与许多运营商不同。例如减法,1 - 2 - 3
是 (1 - 2) - 3
而不是 1 - (2 - 3)
.
Java 对 = assignemnts
具有从右到左的结合性请注意,不同的运算符有不同的优先级和结合性。值得一读:https://www.w3adda.com/java-tutorial/java-operator-precedence-and-associativity
...或为完全清楚起见使用括号