青训营笔记

76 阅读4分钟

go语言的运算符跟c语言基本都一样,就不写了,因为我会c语言。 接下来的是我在掘金上找到的一些c语言上没有的运算的方法,是去copy过来的。第一目的是为了我自己服务哈,希望那个老哥原谅我。 1.位运算符“&” 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。

2.位运算符“|” 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或

3.位运算符“^” 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。

4.位运算符“<<” 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

5.位运算符“>>” 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。

6.位运算符代码演示

package main

import "fmt"

func main() { var a int = 4 //二进制是:100 var b int = 8 //二进制是:1000

fmt.Printf("a&b的值为:%v\n",a&b) //二进制是:000,对应的十进制是0。说明&进行的是上下对应位的与操作 fmt.Printf("a|b的值为:%v\n",a|b) //二进制是:1100,对应的十进制是12。说明&进行的是上下对应位的或操作 fmt.Printf("a^b的值为:%v\n",a^b) //二进制是:1100,对应的十进制是12。^位运算符是上下对应位不同时,值为1

fmt.Printf("a<<2的值为:%v\n",a<<2) //二进制是:10000,对应的十进制是16。<<左移n位就是乘以2的n次方 fmt.Printf("b>>1的值为:%v\n",b>>1) //二进制是:100,对应的十进制是4。>>移移n位就是除以2的n次方 } 输出为:

image.png

赋值运算符

1.赋值运算符“=” 简单赋值操作符,将值从右侧操作数分配给左侧操作数。

2.赋值运算符“+=” 相加和赋值运算符,向左操作数添加右操作数,并将结果赋给左操作数。

c+=a fmt.Printf("c+=a的值为:%v\n",c) 3.赋值运算符“-=” 减去和赋值运算符,从左操作数中减去右操作数,并将结果赋给左操作数。

c-=a fmt.Printf("c-=a的值为:%v\n",c) 4.赋值运算符“*=” 乘法和赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数。

c*=a fmt.Printf("c*=a的值为:%v\n",c) 5.赋值运算符“/=” 除法和赋值运算符,它用右操作数划分左操作数,并将结果分配给左操作数。

c/=a fmt.Printf("c/=a的值为:%v\n",c) 6.赋值运算符“%=” 模数和赋值运算符,它使用两个操作数来取模,并将结果分配给左操作数。

c%=a fmt.Printf("c%%=a的值为:%v\n",c) 7.赋值运算符“<<=” 左移和赋值运算符。

c<<=1 fmt.Printf("c<<=1的值为:%v\n",c) 8.赋值运算符“>>=” 右移和赋值运算符。

c>>=1 fmt.Printf("c>>=1的值为:%v\n",c) 9.赋值运算符“&=” 按位和赋值运算符。

c&=a fmt.Printf("c&=a的值为:%v\n",c) 10.赋值运算符“^=” 按位异或和赋值运算符。

c^=a fmt.Printf("c^=a的值为:%v\n",c) 11.赋值运算符“|=” 按位包含OR和赋值运算符。

c|=a fmt.Printf("c|=a的值为:%v\n",c) 6.其他运算符 1.运算符“&” 返回变量的地址。

&a将给出变量a的实际地址。

2.运算符“*” 指向变量的指针。

*a是指向变量a的指针。

运算符优先级

运算符优先级确定表达式中的分组。这会影响表达式的计算方式。

某些运算符比其他运算符具有更高的优先级。

例如:乘法除法运算符比加法减法运算符有更高的优先级。

总结如下表:

优先级 分类 运算符 结合性 1 逗号运算符 , 从左到右 2 赋值运算符 =、+=、-=、*=、/=、 %=、 >=、 <<=、&=、^=、l= 从右到左 3 逻辑或 ll 从左到右 4 逻辑与 && 从左到右 5 按位或 l或操作 从左到右 6 按位异或 从左到右 7 按位与 & 从左到右 8 相等/不等 ==、!= 从左到右 9 关系运算符 <、<=、>、>= 从左到右 10 位移运算符 <<、>> 从左到右 11 加法/减法 +、- 从左到右 12 乘法/除法/取余  (乘号)、/、% 从左到右 13 单目运算符 !、 (指针)、& 、++、--、+(正号)、-(负号) 从右到左 14 后缀运算符 ( )、[ ]、-> 从左到右 注意:优先级值越大,表示优先级越高!

注意:优先级值越大,表示优先级越高!!

注意:优先级值越大,表示优先级越高!!!