我正在尝试完成 problem在 LeetCode 上,我在 Swift 中找到了这个解决方案,但我真的不确定代码的这个 while 循环中会发生什么:
func getSum(a: Int, _ b: Int) -> Int {
var a = a
var b = b
while b != 0 {
(a, b) = (a ^ b, (a & b) << 1)
}
return a
}
感谢您的帮助。
最佳答案
(a, b) = (a ^ b, (a & b) << 1)
正在做一个元组赋值。它可以分解为:
let oldA = a
let oldB = b
a = oldA ^ oldB
b = (oldA & oldB) << 1
^
是 Swift(和大多数类 C 语言)中的位异或 (XOR) 运算符
&
是 Swift(和大多数 C-Like 语言)中的按位和 (AND) 运算符
<<
是左位移运算符。 x << 1
表示“将 x 向左移动 1”
关于swift - 这段代码中的 while 循环是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961298/