有一些簡(jiǎn)單的顏色操作,但是輸出是錯(cuò)誤的。我只是想知道這里發(fā)生了什么。主程序:package mainimport ( "fmt" "image/color")func main() { startColor := color.RGBA{0x34, 0xeb, 0x64, 0xff} endColor := color.RGBA{0x34, 0xc9, 0xeb, 0xff} fmt.Printf("%d-%d=%d\n", endColor.G, startColor.G, endColor.G-startColor.G)}輸出:201-235=222
1 回答

慕森卡
TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
color.RGBA.G
是一個(gè)uint8
。 由于 235 大于 201,但 uint8 不存儲(chǔ) -34 之類的負(fù)數(shù),因此該值是換行的。
沒(méi)有什么color
具體的情況。您會(huì)得到相同的答案(222):
var g1, g2 uint8 = 0xc9, 0xeb fmt.Println(g1 - g2)
所以沒(méi)有什么不尋常的,只是標(biāo)準(zhǔn)的Go unsigned integer overflow wrapping。它甚至不是未定義的行為。
- 1 回答
- 0 關(guān)注
- 165 瀏覽
添加回答
舉報(bào)
0/150
提交
取消