golang变量uint、int大小溢出后的结果方式
作者:牛宝贝儿哦
在Go语言中,变量的大小溢出后,`uint`类型会回绕到最小值,而`int`类型会回绕到最大值的相反数,例如,`uint8`溢出后会变成0,`int64`溢出后会变成最小的负数
golang变量uint、int大小溢出后的结果
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 }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。