go 语言基础 运算符

运算符

A:算术运算符:+,-,*,/,%,++,--

/:取商
%:取余,取模
++:自增1
--:自减1
package main

import "fmt"

func main()  {
	/*
	算术运算符: arithmetic operator
	+, -, * ,/ , % , ++, --
	/,取商
	%,取余,取模
	 */
	 a := 9
	 b := 4
	 sum := a + b // 求和
	 sub := a - b //做差
	 mul := a * b // 乘法
	 div := a / b // 除
	 fmt.Println(a, "+", b, "=", sum)
	 fmt.Println(sub, mul, div)
	 mod := a % b
	 fmt.Println(mod)
	 /*
	 8/5 = 1
	 8%5 = 3
	 3/4 = 0
	 3%4 = 3
	 7/3 = 2
	 7%3 = 1
	 2/1 = 2
	 2%1 = 0
	  */

	  fmt.Println("a的数值:", a)
	  a++ // 给a自增1   a = a + 1
	  fmt.Println("a的数值:", a)
	  a-- // 给a自减1
	  fmt.Println(a)
}



B:关系运算符:>,<,>=,<=,==,!=    计算结果是bool

==:判断两个数是否相等
!=:判断是否不等
package main

import "fmt"

func main(){
	/*
	关系运算符:运算结果是bool
	>,<,>=,<=, ==, !=
	==,判断两个数值是否相等
	!=,判断两个数值是否不等
	 */
	 a := 8
	 b := 5
	 fmt.Println(a < b)// 8 < 5,false
	 fmt.Println(a == b) // false
	 fmt.Println(a != b) // true

	 c := true
	 d := false
	 //fmt.Println(c < d) // bool类型不能比较大小
	 fmt.Println(c == d) // false

}



C:逻辑运算符:&&,||,!

&&,逻辑与,规则,操作数都为真才为真,有一个为假就为假。
||,逻辑或,规则,操作数都为假才为假,有一个为真就为真。
!,逻辑非,规则,取反

package main

import "fmt"

func main()  {
	/*
	逻辑运算符:
	&&,逻辑与,"并且"
		所谓逻辑与运算符。如果两个操作数都非零,则条件变为真
		如果两个操作数都为true,结果才为true。
		逻辑与的判定规则:
			所有的操作数从左向右运算,
			如果遇到一个false就直接返回结果为false,
			除非所有的操作数都为true,结果才为true。
		"全真为真,一假为假"
	||,逻辑或,"或者"
		所谓的逻辑或操作。如果任何两个操作数是非零,则条件变为真
		逻辑或的判定规则:
			所有的操作数从左向右运算,
			如果遇到一个true就直接返回结果为true,
			除非所有的操作数都为false,结果才为false。
		"一真为真,全假为假"
	!,逻辑非,"就是取反"
		true,--->false
		false,--->true
	 */
	 b1 := false
	 b2 := false
	 b3 := true
	 res1 := b1 && b2 && b3 // 逻辑与
	 fmt.Println(res1)
	 res2 := b1 || b2 || b3 // 逻辑或
	 fmt.Println(res2)
	 res3 := !b1 // 逻辑非-->取反
	 fmt.Println(res3)

	 a := 3
	 b := 4
	 c := true

	 res4 := a < 4 && b / 2 >1 && c
	 //       T   		T      T
	 res5 := a * 2 < b && b % 2 != 0 && !c
	 //         F			F			F
	 res6 := (a + b)/b >= 0 || !c || b % 2 == 0
	//        T				F			T
	 res7 := !(a * 2 < b)
	 //       !F
	 fmt.Println(res4) // true
	 fmt.Println(res5) // false
	 fmt.Println(res6) // true
	 fmt.Println(res7) // true



}


D:位运算符:了解

将数值转为二进制,按位操作
&,按位与,都为1才为1,有一个为0就为0
|,按位或,都为0才为0,有一个为1就为1
^,异或,不同为1,相同为0
<<,>>,左移,右移,向左移动(放大2的n次方),或向右移动(缩小2的n次方)
package main

import "fmt"

func main()  {
	/*
	 位运算符:将数值转为二进制,按位操作
	&:按位与,都为1才为1,有一个为0就为0
	|:按位或,都为0才为0,有衣蛾为1就为1
	^:异或操作,不同为1,相同为0
	<<:左移, A << B,将A转为二进制,向左移动B位
		相当于A*2的B次方
	>>:右移,A >> B,向右移动B位
	 */
	 a := 60
	 b := 13

	 /*
	 60=32+16+8+4
	 13=8+4+1
	 a: 0011 1100
	 b: 0000 1101
	 &: 0000 1100
	 |:0011 1101
	 ^:0011 0001
	  */
	res1 := a & b
	res2 := a | b
	res3 := a ^ b
	 fmt.Println(res1) // 12
	 fmt.Println(res2) // 61
	 fmt.Println(res3) // 49
	 fmt.Printf("%b,%b\n", a, b)

	 /*
	 b = 13
	 b:  0000 1101
	 <<2:00 110100  = 32+16+4
	 >>2:0000 0011
	  */
	  res4 := b << 2
	  b = 13
	  res5 := b >> 2
	  fmt.Println(res4, res5)

}



E:赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=

=,赋值

a+=b,相当于a = a + b

package main

import "fmt"

func main()  {
	/*
	赋值运算符:=, +=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=
	=,a = b,将=右侧的数值b,赋值给=左边的变量a
	+=, a += b,相当于:a = a + b
	%=, a %= b,相当于:a = a % b
	 */
	 var a int
	 a = 4 // 将数值4赋值给变量a
	 b := 3
	 fmt.Println(a)

	 a += 2 // a=6,b=3
	 a *= b // a=18,b=3
	 b %= 3 // a=18,b=0
	 //a &= 4
	 //a /= b // 除零,runtime error: integer divide by zero

	 fmt.Println(a, b)

}




运算符的优先级:

一元的高于二元的
&&高于||
        使用()可以更改优先级

你可能感兴趣的:(go 语言基础 运算符)