c语言编程笔录

首页 >   > 笔记大全

笔记大全

Go 语言中的运算符优先级有哪些

更新时间:2023-10-02

Go 语言中运算符的分类

在了解 Go 语言中运算符的优先级之前,我们需要了解一下 Go 语言中的运算符的分类。Go 语言中的运算符包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、其他运算符等。这些运算符用于表达式运算,从而实现代码的功能。 算术运算符包括:+ (加)、- (减)、* (乘)、/ (除)、% (取模)。 比较运算符包括:== (等于)、!= (不等于)、> (大于)、>= (大于等于)、< (小于)、<= (小于等于)。 逻辑运算符包括:&& (逻辑与)、|| (逻辑或)、! (逻辑非)。 位运算符包括:& (按位与)、| (按位或)、^ (按位异或)、<< (左移)、>> (右移)、&^ (按位清空)。 赋值运算符包括:= (赋值)、+= (加赋值)、-= (减赋值)、*= (乘赋值)、/= (除赋值)、%= (取模赋值)、<<= (左移赋值)、>>= (右移赋值)、&= (按位与赋值)、|= (按位或赋值)、^= (按位异或赋值)、&^= (按位清空赋值)。 其他运算符包括:& (取地址)、* (取指针值)、<- (channel 接收/发送)。

Go 语言中运算符的优先级

除了赋值运算符的优先级最低,赋值运算符的优先级低于其他所有运算符,其余运算符的优先级大致按照以下顺序从高到低排列: 1. 单目运算符(优先级最高) 2. 算术运算符 3. 位运算符 4. 比较运算符 5. 逻辑运算符 6. channel 操作运算符 7. 组合运算符(优先级最低)

Go 语言中运算符优先级的示例

为了更好地理解运算符的优先级,下面我们来看一些示例: (1) 位运算符优先级高于逻辑运算符。
func main() {
    a := 2
    b := 3
    fmt.Println(a &^ b > 0)  // 输出 false
}
在上面的代码中,&^ 是一个位运算符,其优先级高于逻辑运算符 >,在运算符优先级的规则下,a &^ b 会先执行,计算结果为 0,然后与 0 进行比较得到 false。 (2) 比较运算符优先级高于逻辑运算符。
func main() {
    a := 2
    b := 3
    c := 4
    fmt.Println(a < b && b < c) // 输出 true
}
在上面的代码中,< 是一个比较运算符,其优先级高于逻辑运算符 &&,按照运算符优先级的规则,a < b 会先被计算,计算结果为 true,然后再计算 b < c 的结果为 true,最终的结果为 true。

总结

Go 语言中的运算符包括算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、其他运算符等,它们用于表达式的运算。除了赋值运算符的优先级最低,其他运算符的优先级大致按照单目运算符、算术运算符、位运算符、比较运算符、逻辑运算符、channel 操作运算符、组合运算符的顺序排列。在运算符优先级的规则下,一条表达式会按照运算符的优先级顺序计算,常见的表达式计算过程易于理解,但在复杂的表达式中,需要特别注意运算符的优先级和表达式的计算顺序。