1. 首页
  2. 主题
  3. Go问与答

=========加法运算结果不符合预期=========

FreeWong · · 3097 次点击
```go func main() { var a uint8 = math.MaxUint8 fmt.Println(a) fmt.Println(a + a) } ``` // 结果居然是 254 ,和溢出的计算方法一样,去掉了字节高位 但是为什么呢 不符合大众的预期啊 感谢感谢
<a href="/user/zzustu" title="@zzustu">@zzustu</a> 感谢感谢 所以在 golang 中,做加法、乘法 等待运算时,一不小心就溢出了 而且是默默的 真要很小心。。是不是还要写一个辅助函数来判断 相加的结果 是不是介于 0到255之间,如是的话则可以,否则就panic
#6
更多评论
```go 1111 1111 + 1111 1111 ─────────────── 1 1111 1110 后8字节 1111 1110 = 254 ```
#1
<a href="/user/zzustu" title="@zzustu">@zzustu</a> 感谢,知道将高位字节丢弃了,我的问题就是为什么要丢失 , 难道在 golang 中 uint8 + uint8=uint8 ?
#2

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中