算术运算符
1.C语言中算数运算符有
+ - * / % ++ --
2.Go语言中的算数运算符和C语言一样
+ - * / % ++ --
并且用法都一样
package main
import "fmt"
func main() {
res1 := 1+1
fmt.Println(res1)
res2 := 5-3
fmt.Println(res2)
res3 := 3*4
fmt.Println(res3)
res4 := 4 % 3
fmt.Println(res4)
// 注意点: 在Go语言中,不允许将++ --写在变量前面,只能写在变量的后面
num := 1
//num++
//++num 这种写法会报错
fmt.Println(num)
//注意点: 不同类型的常量(字面量)可以进行运算,不同类型的变量不能进行运算
value := 3.2 * 4
fmt.Println(value)
value2 := 10
num2 := 2
res := value2 * num2
fmt.Println(res)
var num1 = 10
var num2 = 20
res := num2 /num1
fmt.Println(res)
//注意点: 两个字符串类型使用+运算符,是两个字符串拼接
var str1 string = "wjh"
var str2 string = "niuzi"
res := str1 + str2
fmt.Println(res)
//注意点: 和其他语言不一样,Go语言不支持字符串和其他类型进行拼接
//换句话说遵守不同类型不能进行运算
var str = "wjh"
num := 5
res := str + num 会报错
fmt.Println(res)
}
关系运算符
1.C语言中关系运算符
> < >= <= == !=
2.Go语言中关系运算符
> < >= <= == !=
注意点:
在Go语言中,没有非0即真的概念,所以关系运算符号返回的都是true或者false
关系运算符的优先级
不用记, 记住()最高即可
package main
import "fmt"
func main() {
value1 := 10 > 5
fmt.Println(value1)
value2 := 10 < 5
fmt.Println(value2)
注意点: 不同的数据类型不能使用关系运算符比较,相同数据类型不同位也不能比较
var num1 int32 = 10
var num2 int64 = 20
res1 := num1 >= num2 会报错
fmt.Println(res1)
num1 := 10
num2 := 10
//res := num1 == num2
res := num1 != num2
fmt.Println(res)
}
逻辑运算符
1.C语言中逻辑运算符
&& || !
2.Go语言中逻辑运算符
&& || !
注意点:
Go语言中逻辑运算符返回的都是true或者false
参与运算的表达式必须是布尔类型才可以
package main
import "fmt"
func main() {
//&&一假则假
res1 := (10 < 5) && (4 > 3)
fmt.Println(res1)
//参与运算的表达式必须是布尔类型才可以
res2 := 1 && 0 会报错
fmt.Println(res2)
//逻辑或 || 一真则真
res3 := (2 > 5) || (3 < 4)
fmt.Println(res3)
//逻辑非只能作用布尔类型的,没有非零即真的概念
res4 := !(10>20)
//res4 := !1
fmt.Println(res4)
}
位运算符
1.C语言中的位运算符有
& | ^ << >>
2.Go语言的位运算符号C语言一样
& | ^ << >>
多了一个 &^ 逻辑清零运算符
3.位运算是专门用于计算二进制位的
& 一假则假
| 一真则真
^ 不同为真, 相同为假
<< 乘以2的左移多少次幂
>> 除以2的右移多次次幂
package main
import "fmt"
func main() {
// 0100
//&0110
// 0100
a1 := 4
b1 := 6
res1 := a1 & b1
fmt.Println(res1) //4
// 0100
//|0110
// 0110
a2 := 4
b2 := 6
res2 := a2 | b2
fmt.Println(res2) //6
// 0100
//^0110
// 0010
//按位异或,不同为真1,相同为假0
a3 := 4
b3 := 6
res3 := a3 ^ b3
fmt.Println(res3) //2
// << 左移几位就代表 *2的多少次幂
num1 := 3
res4 := num1 << 2
fmt.Println(res4) //12
// << 右移几位就代表 /2的多少次幂
num2 := 16
res5 := num2 >> 3
fmt.Println(res5)
//逻辑清零运算符 &^
// 0100
//&^0110
// 0000
//如果b的二进制位当前是1,则清零
//如果b的二进制位当前不是1,则保留a的当前二进制位
a4 := 4
b4 := 6
res6 := a4 &^ b4
fmt.Println(res6) //0
}
其他运算符
1.C语言中的其它运算符
& 取地址运算符
* 访问地址运算符
2.Go语言中的其他运算符和C语言中的一样
& 取地址运算符
* 访问地址运算符
package main
import "fmt"
func main() {
//注意点: 指针变量的数据类型必须和变量的数据类型相同,才能存储该变量的地址
var num int64
//定义一个int64类型的指针变量
var p *int64
//把num中的地址保存在指针p中
p = &num
//访问num中存储的数据
fmt.Println(*p)
}
网友评论