为什么在swift和java中右移运算符会得到差异结果

Tua*_*ynh 3 java swift

我试图将我的代码从java转换为swift,但是当使用Int类型执行shift右运算符时,得到2个diffrence结果.

// java的

int d = 25;
int x = d >> 1 + 1;
System.out.println(x); //output: 6
Run Code Online (Sandbox Code Playgroud)

// swift(4)

 let d = 25
 let x = d >> 1 + 1
 print(x)  //output: 13
Run Code Online (Sandbox Code Playgroud)

什么是快速代码的解决方案?

khe*_*ood 7

Java正在计算

d >> (1+1)
Run Code Online (Sandbox Code Playgroud)

这是6.

斯威夫特在计算

(d >> 1) + 1
Run Code Online (Sandbox Code Playgroud)

这是13.

您可以使用括号指定要执行的计算.

这是因为运营商优先: