去规范说无符号整数溢出:
对于无符号整数值,运算 +、-、* 和 << 是以 2n 为模计算的,其中 n 是无符号整数类型的位宽。粗略地说,这些无符号整数运算会在溢出时丢弃高位,并且程序可能依赖于 ''wrap around''。
我尝试对其进行测试,但得到的结果不一致 - http://play.golang.org/p/sJxtSHbigT:
package main
import "fmt"
func main() {
fmt.Println("test")
var num uint32 = 1 << 35
}
这给出错误:
prog.go:7: constant 34359738368 overflows uint32
[process exited with non-zero status]
但是根据规范应该没有错误,而是我应该看到 0。
三国纷争
相关分类