go语言学习4 运算符

package main

import (
	"fmt"
)

func main(){
	/*
	算数运算符:+,-,*,/,%,++,--
	+
	-
	*,乘法
	/:取商,两个数相除,取商
	%:取余/取模,两个数相除取余数

	++ 给自己+1
	-- 给自己-1
	 */
	a := 10
	b := 3
	sum := a+b
	fmt.Printf("%d + %d =%d\n",a,b,sum)

	sub := a-b
	fmt.Printf("%d - %d =%d\n",a,b,sub)

	mul := a*b
	fmt.Printf("%d * %d =%d\n",a,b,mul)

	div := a/b //取商
	mod := a%b //取余
	fmt.Printf("%d / %d =%d\n",a,b,div)
	fmt.Printf("%d %% %d =%d\n",a,b,mod)

	c := 3
	c++
	fmt.Println(c)

	c--
	fmt.Println(c)

	/*
	关系运算符:>,<,>=,==,!=
		结果总是bool类型的:true,false
		==:表示两个数值是相等的
	 	!=:表示两个数组不等
	 */

	q := 3
	w := 5
	e := 3
	res1 := q>w
	res2 := w>e
	fmt.Printf("%T,%t\n",res1,res1)
	fmt.Printf("%T,%t\n",res2,res2)

	res3 := q==w
	fmt.Println(res3)

	res4 := q==e
	fmt.Println(res4)

	fmt.Println(q!=w,q!=e)

	/*
	逻辑运算符:操作数必须是bool,运算结果也是bool
	逻辑与:&&
			运算规则:所有的操作数都是真,结果才为真,有一个为假,结果就是假
			"一假则假,全真为真"
	逻辑或:||
			运算规则:所有的操作数都是假,结果才是假,有一个为真,结果就为真
			"一真也真,全假才假"
	逻辑非:!
		!T false
        !F true
	 */
	f1 := true
	f2 := false
	f3 := true
	res6 := f1 && f2
	fmt.Printf("res6:%t\n",res6)

	res7 := f1 && f2 && f3
	fmt.Printf("res7:%t\n",res7)

	res8 := f1 || f2
	fmt.Printf("res8:%t\n",res8)

	res9 := f1||f2||f3
	fmt.Printf("res9:%t\n",res9)

	fmt.Printf("f1:%t,!f1:%t\n",f1,!f1)
	fmt.Printf("f1:%t,!f1:%t\n",f2,!f2)

	r := 3
	t := 2
	y := 5
	res10 := r>t&&y%r==t&&r<(y/t)
	fmt.Println(res10)

	res11 := t*2<y||r/t!=0||y/r>t
	fmt.Println(res11)

	res12 := !(y/r==t)
	fmt.Println(res12)

	/*
	位运算符:
		将数值,转换为二进制后,按位操作
	按位&:
		对应位的数值如果都为1才为1,有一个为0就为0
	按位|:
		对应的数值都是0时才为0,有一个为1就为1
	异或^:
		二元:a^b
			对应位的值不同为1,相同为0
		一元:^a
			按位取反:
				1---0
				0---1
	位清空:&^
			对于a&^b
				对于b上的数值,
				如果为0,则取a对应位上的数值
				如果为1,则结果为就取0

	位移运算符:
	<<:按位左移,将a转为二进制,向左移动b位
		a<<b
	>>:按位右移,将a转为二进制,向右移动b位
		a>>b
	 */
	u := 60
	i := 13
	/*
	a:60 0011 1100
	b:13 0000 1101
	&    0000 1100
	|    0011 1101
	^    0011 0001
	&^   0011 0000

	a:0000 0000 ....0011 1100
	^ 1111 1111 ....1100 0011
	 */
	fmt.Printf("a:%d,%b\n",u,u)
	fmt.Printf("a:%d,%b\n",i,i)

	res13 := u&i
	fmt.Println(res13)

	res14 := u|i
	fmt.Println(res14)

	res15 := u^i
	fmt.Println(res15)

	res16 := u&^i
	fmt.Println(res16)

	res17 := ^a
	fmt.Println(res17)

	o:=8
	/*
	c: ....0000 1000
	      0000100000
	 */
	res18 := o<<2
	fmt.Println(res18)

	res19 := o>>2
	fmt.Println(res19)

	/*
	赋值运算符:
	=,+=,-=,/=,%=,<<=,>>=,&=,|=,^=...
	=,把右侧的数值,赋值给=左边的变量

	 */

	var f int
	f = 3
	fmt.Println(f)

	f+=4
	fmt.Println(f)

	f -= 3
	fmt.Println(f)
	f *= 2
	fmt.Println(f)
	f /= 3
	fmt.Println(f)
	f %= 1
	fmt.Println(f)

	

}
10 + 3 =13
10 - 3 =7
10 * 3 =30
10 / 3 =3
10 % 3 =1
4
3
bool,false
bool,true
false
true
true false
res6:false
res7:false
res8:true
res9:true
f1:true,!f1:false
f1:false,!f1:true
false
true
true
a:60,111100
a:13,1101
12
61
49
48
-11
32
2
3
7
4
8
2
0

发布了57 篇原创文章 · 获赞 59 · 访问量 9694

猜你喜欢

转载自blog.csdn.net/AI_LINNGLONG/article/details/105314302