[英]Color operation in go
有一些簡單的顏色操作,但是output是錯誤的。 我只是想知道這里發生了什么。
主要.c:
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)
}
output:
201-235=222
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 。 它甚至不是未定義的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.