亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

轉換負數。

轉換負數。

Go
ibeautiful 2023-06-26 17:02:30
當將負數轉換為無符號整數并隨后添加該值時,會導致減法。a := (uint8)(10) b := (int8)(-8) fmt.Println(a + (uint8)(b)) // result: 2這是一種慣用的方法還是應該更明確地進行?
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻1848條經驗 獲得超2個贊

由于該類型是無符號的,因此它是溢出
uint8(b)248,所以a + uint8(b)10+248=258=> 255 0 1 2 => 2

我的問題更多是關于當值(有時您想加,有時想減)來自參數(必須是有符號類型)時如何從無符號整數中減去,這使得您必須在減法之前進行類型轉換/添加。

同時使用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

您應該在此處刪除多余的括號:


a := (uint8)(10)

b := (int8)(-8)

fmt.Println(a + (uint8)(b))


用這個:


a := uint8(10)

b := int8(-8)

fmt.Println(a + uint8(b))


查看完整回答
反對 回復 2023-06-26
  • 1 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號