2 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
你首先要了解uint8。Uint8 的范圍從 0 到 255,不超過這個(gè)范圍。您已將“a”和“b”聲明為 uint8。您使用隱式類型聲明“c”,使其成為 uint8,最大值為 255。這就是為什么您的輸出為 126。(不是 127,因?yàn)椤?”也被計(jì)算在內(nèi))
要完成這項(xiàng)工作,只需更改“a”和“b”的類型
package main
import "fmt"
func main() {
a := uint16(255)
b := uint16(127)
c := a + b
fmt.Println(a, "+", b, "=", c)
}

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
您將兩個(gè)變量都聲明為 uint8 ,這意味著它在內(nèi)存中最多占用 8 位,并且這只是一個(gè)正值,因此最大數(shù)字可能是 2^8 (256)。
現(xiàn)在,當(dāng)您添加兩個(gè)數(shù)字時(shí),它只是將其相加并返回輸出 => 255 + 127 = 382;
但是變量 c 也是 uint8 類型,并且這個(gè)數(shù)字超出了它的范圍,因此為了將這個(gè)數(shù)字放入變量中,它用最大數(shù)字減去輸出并在變量 C 中進(jìn)行調(diào)整。
a + b = 255 + 127 = 382
c = 382 - 256
= 126
- 2 回答
- 0 關(guān)注
- 114 瀏覽
添加回答
舉報(bào)