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
。或使用括号以完全清晰