有一些简单的颜色操作,但是输出是错误的。我只是想知道这里发生了什么。主程序: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 关注
- 140 浏览
添加回答
举报
0/150
提交
取消