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

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

do + 操作時相同數據類型的行為方式

do + 操作時相同數據類型的行為方式

Go
偶然的你 2022-06-01 11:35:36
剛開始在 packthub 上學習 Go。在其中一個測驗中,我看到了這個問題并在我的 VScode 上運行了它。我想知道為什么我會得到這個答案。這是代碼。package main   import "fmt"     func main() {         a := uint8(255)         b := uint8(127)         c := a + b         fmt.Println(a, "+", b, "=", c)    }輸出是126。請問如何?
查看完整描述

2 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

你首先要了解uint8。Uint8 的范圍從 0 到 255,不超過這個范圍。您已將“a”和“b”聲明為 uint8。您使用隱式類型聲明“c”,使其成為 uint8,最大值為 255。這就是為什么您的輸出為 126。(不是 127,因為“0”也被計算在內)


要完成這項工作,只需更改“a”和“b”的類型


package main

import "fmt" 


func main() {

   a := uint16(255)

   b := uint16(127)

   c := a + b

   fmt.Println(a, "+", b, "=", c)

}


查看完整回答
反對 回復 2022-06-01
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

您將兩個變量都聲明為 uint8 ,這意味著它在內存中最多占用 8 位,并且這只是一個正值,因此最大數字可能是 2^8 (256)。


現在,當您添加兩個數字時,它只是將其相加并返回輸出 => 255 + 127 = 382;


但是變量 c 也是 uint8 類型,并且這個數字超出了它的范圍,因此為了將這個數字放入變量中,它用最大數字減去輸出并在變量 C 中進行調整。


a + b = 255 + 127 = 382


c = 382 - 256

  = 126


查看完整回答
反對 回復 2022-06-01
  • 2 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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