上QQ阅读APP看书,第一时间看更新
2.1.2 运算符
Go语言里面的数值运算符包括二元运算符、一元运算符。
1. 二元运算符
二元运算符包括算术运算、逻辑运算和比较运算,运算符优先级按从上到下的递减顺序排列:
* / % << >> & &^ + - | ^ == != < <= > >= && ||
在同一个优先级中,使用的是左优先结合规则,如有特殊,可使用括号明确优先顺序。
算术运算符“+”“-”“*”和“/”适用于整型、浮点型和复数,但是取模运算符“%”仅用于整型间的运算。取模运算符的符号和被取模数的符号总是一致的。除法运算符“/”的行为则依赖于操作数的类型,比如5.0/4.0的结果是1.25,但是5/4的结果是1,因为整数除法会向着0的方向截断余数。
两个相同的整数类型可以使用下面的二元比较运算符进行比较,比较表达式的结果是布尔类型。
== equal to != not equal to < less than <= less than or equal to > greater than >= greater than or equal to
如果算术运算的结果过大,就会出现溢出现象,无论有无符号,超出高位的bit位部分将被丢弃。如果原始的数值是有符号类型,数值的正负号可能会出现变化。
布尔型、数字类型和字符串等基本类型都是可比较的,也就是说两个相同类型的值可以用“==”和“!=”进行比较。
2. 一元运算符
一元运算符包括一元加法运算符、一元减法运算符、bit位操作运算符。
一元加法运算符和一元减法运算符如下:
+ 一元加法(无效果)
- 负数
bit位操作运算符见表2-2。
位操作运算符“&^”用于按位清空(AND NOT):对于表达式z = x &^ y,如果对应y中某bit位为0,那么结果z对应的bit位等于x相应的bit位的值,否则z对应的bit位为0。
移位运算符“<<”和“>>”的含义及说明见表2-3,其中x << n 和x >> n的右操作数(n)必须为无符号数。