赞
踩
golang中变量的大小溢出会是什么结果呢?
- // uint8的取值范围: 0 - 255
- var a uint8 = 1
- var b uint8 = 255
- fmt.Println("减法:", a-b)
这段代码的结果是什么呢?
很明显uint8的取值范围是0-255之间,此时已经超出范围了,那么超出后的结果是什么呢?0或者0报错?我也不知道,一起来看看最后的结果是怎样?
- package main
-
- import "fmt"
-
- //两个uint类型的数字相减后小于0
- func main() {
- var a uint8 = 1
- var b uint8 = 255
- fmt.Println("减法:", a-b)
- fmt.Println("加法:", a+b)
- fmt.Println("乘法:", a*b)
- // 结果为:
- // 减法: 2
- // 加法: 0
- // 乘法: 255
- }
其它类型和此情况类似,例如int64:
- package main
-
- import "fmt"
-
- // int64 Range: -9223372036854775808 through 9223372036854775807.
- func main() {
- var a int64 = -8223372036854775807
- var b int64 = 9223372036854775807
- fmt.Println("减法:", a-b)
- fmt.Println("乘法:", a*b)
- // 结果为:
- // 减法: 1000000000000000002
- // 乘法: -1000000000000000001
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。