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
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论