|
|
1
2
如另一个答案所示,与其他一些编程语言不同,go以一种定义良好的方式处理所有整数溢出,类似于在程序集级别的大多数当前CPU上所发生的情况。 127=0111 1111二进制 +1=1000 0000二进制 被解释为有符号二的补码8位整数的是-128。 255=1111111二进制 +1=100000000二进制(注9位) 如果我们有9个位,那就是256,但是我们没有,我们只有8个位,所以它变成0000个二进制,也就是0。 同样,对于乘法: 127*127=16129=0011 1111 0000 0001箱 255*255=65025=1111 1110 0000 0001箱 两者都有较低的8位,因为0000 0001 bin=1 注意:大多数情况下,如果您依赖整数溢出,那么您应该后退一步,仔细考虑一下这是否是您所做工作的最佳方式。这是一种非常低级的行为,涉及精确的按位行为,并且应该始终伴随足够的注释来解释什么和为什么。 |
|
|
2
3
go不会在运行时因整数溢出而死机。按照 doc :
|