运算符
文章发布较早,内容可能过时,阅读注意甄别。
# 1,算术运算符。
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 加 | 10 + 5 | 15 |
- | 减 | 10 - 5 | 5 |
* | 乘 | 10 * 5 | 50 |
/ | 除 | 10 / 5 | 2 |
% | 取模(取余) | 10 % 3 | 1 |
++ | 后自增,没有前自增 | a=0; a++ | a=1 |
-- | 后自减,没有前自减 | a=2; a-- | a=1 |
# 2,关系运算符。
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 等于 | 4 == 3 | false |
!= | 不等于 | 4 != 3 | true |
> | 大于 | 2 > 3 | false |
< | 小于 | 2 < 3 | true |
>= | 大于等于 | 2 >= 3 | false |
<= | 小于等于 | 2 <= 3 | true |
# 3,逻辑运算符。
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
! | 非 | !a | 如果 a 为假,则!a 为真;如果 a 为真,则!a 为假。 |
&& | 与 | a && b | 如果 a 和 b 都为真,则结果为真,否则为假 |
|| | 或 | a || b | 如果 a 和 b 有一个为真,则结果为真,二者都为假是,结果为假 |
package main
import "fmt"
func main() {
fmt.Println("4 > 3 结果:", 4 > 3)
fmt.Println("4 != 3 结果", 4 != 3)
//! 表示取反
fmt.Println("!(4 > 3) 结果:", !(4 > 3))
fmt.Println("!(4 != 3) 结果", !(4 != 3))
//&& 与,左边右边都为真,结果才为真,其他都为假
fmt.Println("true && true 结果:", true && true)
fmt.Println("true && false 结果:", true && false)
//|| 或者,左边右边都为假,结果才为假,其他都为真
fmt.Println("true && false 结果:", true && false)
fmt.Println("false && false 结果:", false && false)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
逻辑运算符往往是与关系运算符配合使用的。
0 就是假,非 0 就是真。
现在要判断一个数字是否在 0 到 10 之间。
package main
import "fmt"
func main() {
a := 8
//错误写法如下
//fmt.Println("0 <= a <= 10 结果是:", 0 <= a <= 10)
//正确写法如下
fmt.Println("0 <= a && a <= 10 结果是:", 0 <= a && a <= 10)
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 4,位运算符。
不常用,做了解。
运算符 | 术语 | 说明 | 示例 |
---|---|---|---|
& | 按位与 | 参与运算的两数各对应的二进位相与 | 60 & 13 结果为 12 |
| | 按位或 | 参与运算的两数各对应的二进位相与 | 60 | 13 结果为 61 |
^ | 异或 | 参与运算的两数各对应的二进位异或,当两对应的二进位相异时,结果为 1 | 60 ^ 13 结果为 240 |
<< | 左移 | 左移 n 位就是乘以 2 的 n 次方。左边丢弃,右边补 0 | 4 << 2 结果为 16 |
>> | 右移 | 左移 n 位就是除以 2 的 n 次方。右边丢弃,左边补位 | 4 >> 2 结果为 1 |
# 5,赋值运算符。
常用
运算符 | 说明 | 示例 |
---|---|---|
= | 普通赋值 | c = a + b 将 a + b 表达式结果赋值给 c |
+= | 相加后再赋值 | c += a 等价于 c = c + a |
-= | 相减后再赋值 | c -= a 等价于 c = c - a |
*= | 相乘后再赋值 | c _= a 等价于 c = c _ a |
/= | 相除后再赋值 | c /= a 等价于 c = c / a |
%= | 求余后再赋值 | c %= a 等价于 c = c % a |
<<= | 左移后再赋值 | c <<= 2 等价于 c = c << 2 |
>>= | 右移后在赋值 | c >>= 2 等价于 c = c >> 2 |
&= | 按位与后赋值 | c &= 2 等价于 c = c & 2 |
^= | 按位与或后赋值 | c ^= 2 等价于 c = c ^ 2 |
|= | 按位或后赋值 | c |= 2 等价于 c = c | 2 |
# 6,其他运算符。
运算符 | 术语 | 示例 | 说明 |
---|---|---|---|
& | 取地址运算符 | &a | 变量 a 的地址 |
* | 取值运算符 | *a | 指针变量 a 所指向内存的值 |
# 7,运算符优先级。
在 go 语言中,一元运算符拥有最高的优先级,二元运算符的运算方向均是从左至右。
下表列出了所有运算符以及他们的优先级,由上至下代表由高到低:
优先级 | 运算符 |
---|---|
7 | ^ , ! |
6 | * , / , %, <<, >>, &, &^ |
5 | +, -, ^, | |
4 | ==, !=, <, <=, >, >= |
3 | <- |
2 | && |
1 | \|\| |
运算在编程语言当中经常用到,是基础中的基础,尤其是逻辑运算以及关系运算。
上次更新: 2024/11/19, 23:11:42