1 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
由于該類(lèi)型是無(wú)符號(hào)的,因此它是溢出:uint8(b)
是248
,所以a + uint8(b)
是10+248=258=> 255 0 1 2 => 2
我的問(wèn)題更多是關(guān)于當(dāng)值(有時(shí)您想加,有時(shí)想減)來(lái)自參數(shù)(必須是有符號(hào)類(lèi)型)時(shí)如何從無(wú)符號(hào)整數(shù)中減去,這使得您必須在減法之前進(jìn)行類(lèi)型轉(zhuǎn)換/添加。
同時(shí)使用int8
:
? ? a := int8(10)
? ? b := int8(-8)
? ? fmt.Println(a + b) // 2
? ? fmt.Println(a - b) // 18
您可以避免溢出,如下所示:
? ? a := uint8(10)
? ? b := int8(-8)
? ? c := uint8(b)
? ? d := uint16(a) + uint16(c)
? ? fmt.Println(d) // 258
您應(yīng)該在此處刪除多余的括號(hào):
a := (uint8)(10)
b := (int8)(-8)
fmt.Println(a + (uint8)(b))
用這個(gè):
a := uint8(10)
b := int8(-8)
fmt.Println(a + uint8(b))
- 1 回答
- 0 關(guān)注
- 195 瀏覽
添加回答
舉報(bào)