来自同一个Go程序的不同输出

Masnun:

这是我的Go代码:http : //play.golang.org/p/CDUagFZ-rk

package main

import "fmt"

func main() {
    var max int = 0
    for i := 0; i < 1000000; i++ {
        var len int = GetCollatzSeqLen(i)
        if len > max {
            max = len
        }
    }

    fmt.Println(max)

}

func GetCollatzSeqLen(n int) int {
    var len int = 1
    for n > 1 {
        len++
        if n%2 == 0 {
            n = n / 2
        } else {
            n = 3*n + 1
        }
    }
    return len

}

在本地计算机上,运行程序时,输出为525。当我在Go Playground上运行它时,输出为476。

我想知道有什么不同。

peterSO:

这是因为特定于实现的大小为int32位或64位。用于int64获得一致的结果。例如,

package main

import "fmt"

func main() {
    var max int64 = 0
    for i := int64(0); i < 1000000; i++ {
        var len int64 = GetCollatzSeqLen(i)
        if len > max {
            max = len
        }
    }

    fmt.Println(max)

}

func GetCollatzSeqLen(n int64) int64 {
    var len int64 = 1
    for n > 1 {
        len++
        if n%2 == 0 {
            n = n / 2
        } else {
            n = 3*n + 1
        }
    }
    return len

}

输出:

525

游乐场:http : //play.golang.org/p/0Cdic16edP


Go编程语言规范

数值类型

int32所有有符号的32位整数
 的集合(-2147483648至2147483647)int64所有有符号的64位整数的集合(-9223372036854775808至9223372036854775807)

n位整数的值是n位宽,并使用二进制补码算术表示。

还有一组预先声明的数字类型,具有特定于实现的大小:

uint 
 与uint大小相同的32位或64位int

要查看特定于实现的大小int,请运行此程序。

package main

import (
    "fmt"
    "runtime"
    "strconv"
)

func main() {
    fmt.Println(
        "For "+runtime.GOARCH+" the implementation-specific size of int is",
        strconv.IntSize, "bits.",
    )
}

输出:

对于amd64,特定于实现的int大小为64位。

在Go Playground上:http//play.golang.org/p/7O6dEdgDNd

对于amd64p32,特定于实现的int大小为32位。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

同一个程序给了我不同的输出

将来自不同数据库的数据整理到同一个输出窗口

来自两个不同文本的同一个单词的单词嵌入

使用来自同一个键的不同数组的属性更新数组-javascript

tensorflow 每次都恢复不同的权重值(来自同一个文件!)

基于来自不同表的连接从同一个表中获取多个值

如何处理来自同一个异常对象的不同类型的异常?

MySQL:将来自同一个表的多个 WHERE 子句与不同的列名组合

“ kubectl get all --all-namespaces”对同一个集群有不同的输出

在两个不同的 MODAL BODY 引导程序中加载同一个表

如何比较来自同一列和不同行但同一个表的值?

来自同一个包的多个导入

来自同一个依赖的依赖收敛

来自同一个表的多个内部联接

来自同一个表的内部连接

来自同一个txt文件的多个值

来自同一个表的子查询

将来自2个不同查询的2个变量传递到同一个foreach循环中

为什么同一个程序在Windows上与Mac上运行的方式不同

为什么运行同一个程序需要不同的时间?

如何使用同一个父对象处理不同的事件处理程序?

将来自不同主机的多个 IP 地址指向具有不同端口的同一个域名

具有来自不同模型的数据但显示在同一个视图上的两个部分视图

Python3:来自同一个类的两个对象有何不同?

显示来自同一个 reducer 的 2 个不同状态而没有状态重写自己

同一个查询结果不同的文档

同一个变量中的不同值

检测同一个id中的不同值

同一个查询的不同解释