Golang学习之路一六运算符

发布时间:2024年01月08日

Golang学习之路一六运算符

算数运算符

符号说明
+相加
-相减
*相乘
/相除
%求余
++自增
自减
package main

import "fmt"

func main() {
	a := 10
	b := 6
	// +
	fmt.Println(a+b)
	// -
	fmt.Println(a-b)
	// *
	fmt.Println(a*b)
	// /
	fmt.Println(a/b)
	// %
	fmt.Println(a%b)
	// ++
	fmt.Println(a)
	a++
	fmt.Println(a)
	// -
	fmt.Println(b)
	b--
	fmt.Println(b)
}

关系运算符

符号说明
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
package main

import "fmt"

func main() {
	a := 10
	b := 6
	// ==
	fmt.Println(a==b)
	// !=
	fmt.Println(a!=b)
	// >
	fmt.Println(a>b)
	// <
	fmt.Println(a<b)
	// >=
	fmt.Println(a>=b)
	// <=
	fmt.Println(a<=b)
	// ==
	fmt.Println(a==b)
}

逻辑运算符

符号说明
&&
!
package main

import "fmt"

func main() {
	a := 10
	b := 6
	c := 6
	// &&
	fmt.Println(a > b && b >= c)
	// ||
	fmt.Println(a > b || b > c)
	// !
	var d bool
	fmt.Println(!d)
}

赋值运算符

运算符描述实例
=简单的赋值运算符,将一个表达式的值赋给一个左值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
=按位或后赋值

位运算

运算符描述实例
&按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。(A & B) 结果为 12, 二进制为 0000 1100
按位或运算符"
^按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为 1。(A ^ B) 结果为 49, 二进制为 0011 0001
<<左移运算符"<<“是双目运算符。左移 n 位就是乘以 2 的 n 次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补 0。A << 2 结果为 240 ,二进制为 1111 0000
>>右移运算符">>“是双目运算符。右移 n 位就是除以 2 的 n 次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。A >> 2 结果为 1
package main

import "fmt"

func main() {

	var a uint = 60      /* 60 = 0011 1100 */
	var b uint = 13      /* 13 = 0000 1101 */
	var c uint = 0

	c = a & b       /* 12 = 0000 1100 */
	fmt.Println(c)

	c = a | b       /* 61 = 0011 1101 */
	fmt.Println(c)

	c = a ^ b       /* 49 = 0011 0001 */
	fmt.Println(c)

	c = a << 2     /* 240 = 1111 0000  a*(2**2) */
	fmt.Println(c)

	c = a >> 2     /* 15 = 0000 1111 a/(2*2) */
	fmt.Println(c)
}

其他运算符

运算符描述实例
&返回变量存储地址&a; 将给出变量的实际地址。
*指针变量。*a; 是一个指针变量
package main

import "fmt"

func main() {
	var a int = 4
	var b int32
	var c float32
	var ptr *int

	/* 运算实例 */
	fmt.Printf("a 变量类型为 = %T\n", a );
	fmt.Printf("b 变量类型为 = %T\n", b );
	fmt.Printf("c 变量类型为 = %T\n", c );

	/*  & 和 * 运算符实例 */
	ptr = &a     /* 'ptr' 包含了 'a' 变量的地址 */
	fmt.Printf("a 的值为  %d\n", a);
	fmt.Printf("*ptr 为 %d\n", *ptr);
}

运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了所有运算符以及它们的优先级,由上至下代表优先级由高到低:

优先级运算符
5* / % << >> & &^
4+ - \ ^
3== != < <= > >=
2&&
1

当然,我们可以通过使用括号来临时提升某个表达式的整体运算优先级。

文章来源:https://blog.csdn.net/yinjl123/article/details/135465443
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。