
加减乘除,童叟无欺。
a := 10
b := 3
fmt.Println(a + b) // 13
fmt.Println(a - b) // 7
fmt.Println(a * b) // 30
fmt.Println(a / b) // 3 (注意:整数相除还是整数)
fmt.Println(a % b) // 1 (取余数,就像分赃分不匀剩下的)

++ 和 -- 只能单独一行,不能放在表达式里!也没有 ++i 这种写法!
i := 1
i++ // 正确
// j := i++ // 错误!会被打断腿
// ++i // 错误!C语言的陋习要改掉
== (相等), != (不等), >, <, >=, <=。&& (与), || (或), ! (非)。这是高手才用的招式,直接操作二进制位。
| 运算符 | 描述 | 示例 (A=60, B=13) |
|---|---|---|
& |
按位与 (都为1才为1) | A & B = 12 |
| |
按位或 (有一个1就为1) | A | B = 61 |
^ |
按位异或 (不同为1,相同为0) | A ^ B = 49 |
<< |
左移 (相当于乘以2的n次方) | A << 2 = 240 |
>> |
右移 (相当于除以2的n次方) | A >> 2 = 15 |
&^ |
位清空 (Bit Clear) | A &^ B (把B中是1的位,在A中清零) |
不用乘法,怎么算 x * 2 ?
package main
import "fmt"
func main() {
x := 10
// 请用位运算实现 x * 2
result := ______
fmt.Println(result)
}
任务: 填空。
答案: x << 1
解析: 左移一位相当于乘以 2,右移一位相当于除以 2。这在底层运算中速度极快,就像唐家霸王枪一样快!