java xy x y_为什么该语句在Java中不起作用x ^ = y ^ = x ^ = y;
小編典典
您的陳述大致相當(dāng)于這種擴展形式:
x = x ^ (y = y ^ (x = x ^ y));
與C語言不同,在Java中,保證二進制運算符的左操作數(shù)在右操作數(shù)之前進行求值。評估如下:
x = x ^ (y = y ^ (x = x ^ y))
x = 1 ^ (y = 2 ^ (x = 1 ^ 2))
x = 1 ^ (y = 2 ^ (x = 3))
x = 1 ^ (y = 2 ^ 3) // x is set to 3
x = 1 ^ (y = 1)
x = 1 ^ 1 // y is set to 1
x = 0 // x is set to 0
您可以反轉(zhuǎn)每個xor表達(dá)式的參數(shù)順序,以便在再次評估變量之前完成賦值:
x = (y = (x = x ^ y) ^ y) ^ x
x = (y = (x = 1 ^ 2) ^ y) ^ x
x = (y = (x = 3) ^ y) ^ x
x = (y = 3 ^ y) ^ x // x is set to 3
x = (y = 3 ^ 2) ^ x
x = (y = 1) ^ x
x = 1 ^ x // y is set to 1
x = 1 ^ 3
x = 2 // x is set to 2
這是一個更緊湊的版本,也可以使用:
x = (y ^= x ^= y) ^ x;
但這是交換兩個變量的真正可怕的方法。使用臨時變量是一個更好的主意。
2020-09-16
總結(jié)
以上是生活随笔為你收集整理的java xy x y_为什么该语句在Java中不起作用x ^ = y ^ = x ^ = y;的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python pip gpl_pytho
- 下一篇: python作业代码没有缩进严重吗_Py