为什么golang移位运算符优先于加法?

时间:2018-01-06 01:45:48

标签: go operator-precedence

java:  System.out.println(1 + (9 - 1) >> 1);  // OUPUT: "4"
golang: fmt.Println(1 + (9 - 1) >> 1) // OUPUT: "5"

去:https://kuree.gitbooks.io/the-go-programming-language-report/content/31/text.html

Java:https://introcs.cs.princeton.edu/java/11precedence/

Python:http://www.mathcs.emory.edu/~valerie/courses/fall10/155/resources/op_precedence.html

C / C ++:http://en.cppreference.com/w/c/language/operator_precedence

似乎只有golang>>优先于+?但为什么呢?

1 个答案:

答案 0 :(得分:3)

这是语言哲学和可用性的差异。 将操作视为乘法/除以2的幂,即功能视图。其他语言将其视为基于位的运算符,它们在布尔运算符旁边分类。这更多地基于对常见数据类型/视图的感觉。