运算符介绍
运算符是一种比较特殊的符号,用以表示数据的运算、赋值和比较等
1、算术运算符 +、-、*、/、%
2、赋值运算符 =、+=、-=、*=
3、比较运算符/关系运算符 ==、!=、>=、<=、>、<
4、逻辑运算符 或与非
5、位运算符
6、其他运算符
运算符优先级
1、运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序
2、只有单目运算符、赋值运算符是从右向左运算的
3、大致的顺序如下:
括号,++,-- > 单目运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号
4、具体的顺序如下表(往上优先级最高)
分类 | 描述 | 关联性 |
---|---|---|
后缀 | () [] -> ++ – | 从左到右 |
单目 | + - ! ~ (type)* & sizeof | 从右到左 |
乘法 | * / % | 从左到右 |
加法 | + - | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= >= > | 从左到右 |
相等(关系) | == != | 从左到右 |
按位AND | & | 从左到右 |
按位XOR | ^ | 从左到右 |
按位OR | | | 从左到右 |
逻辑AND | && | 从左到右 |
逻辑OR | || | 从左到右 |
赋值运算符 | = += -= *= /= %= >>= <<= &= ^= |= | 从右到左 |
逗号 | , | 从左到右 |
算术运算符
算术运算符是对数值类型的变量进行运算的,比如加减乘除
运算符 | 描述 | 实例 |
---|---|---|
+ | 相加 | A + B 输出结果 30 |
- | 相减 | A - B 输出结果 -10 |
* | 相乘 | A * B 输出结果 200 |
/ | 相除 | B / A 输出结果 2 |
% | 求余 | B % A 输出结果 0 |
++ | 自增 | A++ 输出结果 11 |
– | 自减 | A-- 输出结果 9 |
//演示算术运算符基本使用
package main
import (
"fmt"
)
func main(){
//演示 / 使用
//如果参数运算的数都是整数,那么除后去掉小数部分,保留整数部分
fmt.Println(10 / 4) //2
var n1 float32 = 10 / 4 //2
fmt.Println(n1)
//如果需要保留小数部分,则需要有浮点数参与运算
var n2 float32 = 10.0 / 4 //2.5
fmt.Println(n2)
//演示 % 使用
//取模公式:a % b = a - a / b * b
fmt.Println(10 % 3) //1
fmt.Println(-10 % 3) //-1
fmt.Println(10 % -3) //1
fmt.Println(-10 % -3) //-1
//演示 ++、-- 使用
var i int = 10
i++ //等价i = i + 1 结果为11
fmt.Println(i)
i-- //等价i = i - 1 结果为10
fmt.Println(i)
}
算术运算符细节
1、对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。例如: x:=19/5,结果是3
2、当对一个数取模时,可以等价a%b=a-a/b*b,这样我们可以看到取模的一个本质运算
3、Golang的自增自减只能当作一个独立语言使用时,不能这样使用b:=a++或者b:=a–
4、Golang的++和–只能写在变量的后面,不能写在变量的前面,即:只有a++ a–没有++a --a
5、Golang的设计者去掉c/java中的自增自减容易混淆的写法,让Golang更加简洁,统一
练习案例
package main
import (
"fmt"
)
func main(){
//假如还有97天放假,问还有多少个星期零多少天
var days int = 97
var week int = days / 7
var leftDay int = days % 7
fmt.Printf("%d个星期零%d天\n",week,leftDay)
//定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:
//5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度
var hua float32 = 170.51
var she float32 = 5.0 / 9 * (hua - 100) //需要保留小数精度,故而不用5
fmt.Printf("%v华氏温度对应的摄氏温度=%v",hua,she)
}