Go - 运算符优先级
运算符优先级决定表达式中术语的分组。这会影响表达式的计算方式。某些运算符的优先级高于其他运算符;例如,乘法运算符的优先级高于加法运算符。
例如x = 7 + 3 * 2;此处,x 被分配为 13,而不是 20,因为运算符 * 的优先级高于 +,因此它首先乘以 3*2,然后添加到 7。
在这里,优先级最高的运算符出现在表的顶部,优先级最低的运算符出现在底部。在表达式中,将首先计算优先级较高的运算符。
| 类别 | 操作员 | 关联性 |
|---|---|---|
| 后缀 | () [] -> . ++ - - | 左到右 |
| 一元 | + - ! ~ ++ - - (类型)* & sizeof | 右到左 |
| 乘法 | * / % | 左到右 |
| 添加剂 | + - | 左到右 |
| 转移 | <<>> | 左到右 |
| 关系型 | <<=>>= | 左到右 |
| 平等 | ==!= | 左到右 |
| 按位与 | & | 左到右 |
| 按位异或 | ^ | 左到右 |
| 按位或 | | | 左到右 |
| 逻辑与 | && | 左到右 |
| 逻辑或 | || | 左到右 |
| 任务 | = += -= *= /= %=>>= <<= &= ^= |= | 右到左 |
| 逗号 | , | 左到右 |
例子
尝试以下示例来了解 Go 编程语言中可用的运算符优先级 -
package main
import "fmt"
func main() {
var a int = 20
var b int = 10
var c int = 15
var d int = 5
var e int;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
fmt.Printf("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
fmt.Printf("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
fmt.Printf("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
fmt.Printf("Value of a + (b * c) / d is : %d\n" , e );
}
当您编译并执行上述程序时,它会产生以下结果 -
Value of (a + b) * c / d is : 90 Value of ((a + b) * c) / d is : 90 Value of (a + b) * (c / d) is : 90 Value of a + (b * c) / d is : 50
go_operators.htm