gpt4 book ai didi

go - 为什么我在添加两个正 16 位整数后得到负整数?

转载 作者:数据小太阳 更新时间:2023-10-29 03:42:54 26 4
gpt4 key购买 nike

我是 golang 的新手,实际上,我是基于类型的编程的新手。我只懂 JS。

在学习 golang 教程中的简单示例时。我发现添加 a1 + a2 提供负整数值?

var a1 int16 = 127
var a2 int16 = 32767

var rr int16 = a1 + a2

fmt.Println(rr)

结果:

-32642

异常(exception):

  1. 编译器将在超过 int16 最大值时抛出错误。
  2. (或)GO 自动将 int16 转换为 int32。
  3. 32,894

你们能解释一下为什么显示 -32642 吗?

最佳答案

这是 Integer Overflow 的结果行为符合规范中的定义。

您没有看到预期的结果,因为

  1. 溢出发生在运行时,而不是编译时。
  2. Go 是静态类型的。
  3. 32,894 大于 int16 可表示的最大值。

关于go - 为什么我在添加两个正 16 位整数后得到负整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50190594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com