@@ -1,58 +0,0 @@ 04.运算符 | 凤凰涅槃进阶之路

04.运算符

Abel sun2023年1月6日约 920 字大约 3 分钟

04.运算符

1,算术运算符

运算符术语示例结果
+10 + 515
-10 - 55
*10 * 550
/10 / 52
%取模(取余)10 % 31
++后自增,没有前自增a=0; a++a=1
--后自减,没有前自减a=2; a--a=1

2,关系运算符

运算符术语示例结果
==等于4 == 3false
!=不等于4 != 3true
>大于2 > 3false
<小于2 < 3true
>=大于等于2 >= 3false
<=小于等于2 <= 3true

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)
}

逻辑运算符往往是与关系运算符配合使用的。

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)
}

4,位运算符

不常用,做了解。

运算符术语说明示例
&按位与参与运算的两数各对应的二进位相与60 & 13 结果为12
|按位或参与运算的两数各对应的二进位相与60 | 13结果为61
^异或参与运算的两数各对应的二进位异或,当两对应的二进位相异时,结果为160 ^ 13结果为240
<<左移左移n位就是乘以2的n次方。左边丢弃,右边补04 << 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||

运算在编程语言当中经常用到,是基础中的基础,尤其是逻辑运算以及关系运算。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.9.1