当前位置:   article > 正文

golang变量uint、int大小溢出后的结果_golang rand.uint64() 超长了

golang rand.uint64() 超长了

golang中变量的大小溢出会是什么结果呢?

  1. // uint8的取值范围: 0 - 255
  2. var a uint8 = 1
  3. var b uint8 = 255
  4. fmt.Println("减法:", a-b)

这段代码的结果是什么呢?

很明显uint8的取值范围是0-255之间,此时已经超出范围了,那么超出后的结果是什么呢?0或者0报错?我也不知道,一起来看看最后的结果是怎样?

  1. package main
  2. import "fmt"
  3. //两个uint类型的数字相减后小于0
  4. func main() {
  5. var a uint8 = 1
  6. var b uint8 = 255
  7. fmt.Println("减法:", a-b)
  8. fmt.Println("加法:", a+b)
  9. fmt.Println("乘法:", a*b)
  10. // 结果为:
  11. // 减法: 2
  12. // 加法: 0
  13. // 乘法: 255
  14. }

其它类型和此情况类似,例如int64:

  1. package main
  2. import "fmt"
  3. // int64 Range: -9223372036854775808 through 9223372036854775807.
  4. func main() {
  5. var a int64 = -8223372036854775807
  6. var b int64 = 9223372036854775807
  7. fmt.Println("减法:", a-b)
  8. fmt.Println("乘法:", a*b)
  9. // 结果为:
  10. // 减法: 1000000000000000002
  11. // 乘法: -1000000000000000001
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/790213
推荐阅读
相关标签
  

闽ICP备14008679号