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