dta43039 2016-03-26 02:42
浏览 340
已采纳

为什么打印出最大整数会导致golang编译错误?

Here is a link to go playground

package main

import "fmt"
import "math"
func main() {
    fmt.Println("Hello, playground")
    fmt.Println(math.MaxUint32)
}

The above code seems to cause

constant 4294967295 overflows int

does fmt.Println convert every number to int automatically?

  • 写回答

1条回答 默认 最新

  • dongpu5600 2016-03-26 02:56
    关注

    The Go Programming Language Specification

    Constants

    An untyped constant has a default type which is the type to which the constant is implicitly converted in contexts where a typed value is required. The default type of an untyped constant is bool, rune, int, float64, complex128 or string respectively, depending on whether it is a boolean, rune, integer, floating-point, complex, or string constant.

    func Println(a ...interface{}) (n int, err error)
    
    fmt.Println(math.MaxUint32)
    

    math.MaxUint32 is an untyped integer constant that defaults to type int in this context, an untyped integer constant argument for a type interface{} parameter.

    int is a signed 32- or 64-bit integer depending on the implementation.

    const (
        MaxInt32  = 1<<31 - 1
        MaxUint32 = 1<<32 - 1
    )
    

    MaxUint32 is greater than MaxInt32.

    if you run go env you should see that you are using a 32-bit architecture, for example, GOARCH="386".

    Don't accept the default 32-bit int type. Use a compatible type conversion. For example, write

    fmt.Println(uint32(math.MaxUint32))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?