go uint 赋值 越界 、 int uint 大小范围


package main

import "fmt"

func main() {
    // code 1
    var a uint = 0
    var b uint = 1
    fmt.Println(a - b)

    // code 2
    //a := uint(0) - uint(1)
    //fmt.Println(a)
}


result -> 18446744073709551615
package main

import "fmt"

func main() {
    // code 1
    //var a uint = 0
    //var b uint = 1
    //fmt.Println(a - b)

    // code 2
    a := uint(0) - uint(1)
    fmt.Println(a)
}

result -> constant -1 overflows uint(panic)

原因是 在 var 赋值的时候 会做隐适类型 转换 直接转换为 有符号整型了

 

 

int 范围 大小 

int8. [-128, 127]
int16. [-32768, 32767]
int32. [-2147483648, 2147483647]
int64. [-9223372036854775808, 9223372036854775807]

 

 

uint 范围 大小

uint8. [0, 255]
uint16. [0, 65535]
uint32. [0, 4294967295]
uint64. [0, 18446744073709551615]

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM