有一些簡單的顏色操作,但是輸出是錯誤的。我只是想知道這里發生了什么。主程序: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貢獻1806條經驗 獲得超8個贊
color.RGBA.G
是一個uint8
。 由于 235 大于 201,但 uint8 不存儲 -34 之類的負數,因此該值是換行的。
沒有什么color
具體的情況。您會得到相同的答案(222):
var g1, g2 uint8 = 0xc9, 0xeb fmt.Println(g1 - g2)
所以沒有什么不尋常的,只是標準的Go unsigned integer overflow wrapping。它甚至不是未定義的行為。
- 1 回答
- 0 關注
- 169 瀏覽
添加回答
舉報
0/150
提交
取消