go中的颜色操作

有一些简单的颜色操作,但是输出是错误的。我只是想知道这里发生了什么。


主程序:


package main


import (

    "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


烙印99
浏览 104回答 1
1回答

慕森卡

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。它甚至不是未定义的行为。
打开App,查看更多内容
随时随地看视频慕课网APP