我是 golang 的新手,实际上,我是基于类型的编程的新手。我只懂 JS。
在学习 golang 教程中的简单示例时。我发现添加 a1 + a2 提供负整数值?
var a1 int16 = 127
var a2 int16 = 32767
var rr int16 = a1 + a2
fmt.Println(rr)
结果:
-32642
异常(exception):
- 编译器将在超过 int16 最大值时抛出错误。
- (或)GO 自动将 int16 转换为 int32。
- 32,894
你们能解释一下为什么显示 -32642 吗?
最佳答案
这是 Integer Overflow 的结果行为符合规范中的定义。
您没有看到预期的结果,因为
- 溢出发生在运行时,而不是编译时。
- Go 是静态类型的。
- 32,894 大于 int16 可表示的最大值。
关于go - 为什么我在添加两个正 16 位整数后得到负整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50190594/