このコードは、右であるgolangのbig intはどのように表現されていますか?
package main
import "fmt"
const (
Big = 1 << 100
Small = Big >> 99
)
func needInt(x int) int { return x*10 + 1 }
func needFloat(x float64) float64 {
return x * 0.1
}
func main() {
fmt.Println(needInt(Small))
fmt.Println(needFloat(Small))
fmt.Println(needFloat(Big))
}
しかし、私は
fmt.Println(Big)
を追加したとき、私はエラーを満たし:
tmp/sandbox042871394/main.go:16: constant 1267650600228229401496703205376 overflows int
私は
const (
Big = 1 << 100
Small = Big >> 99
)
なぜトンのために混乱していますここではこの2行のコードのエラーはありません。
"数値定数は、任意の精度の正確な値を表します。オーバーフロー。" - https://golang.org/ref/spec#Constants – Nadh