抢车位中的排名bug(比较使用了无符号数)

     昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下。不过csdn现在不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073/blog/1264524991

     首先上图,今天我心血来潮想看看我的抢车位怎么个情况,不出意外应该还是排名第一把,虽然最近意外比较多。打开一看,吓了一跳,怎么排到第三去了,不急,看看第一第二比我多多少,再看,这才真吓了一跳,居然是负数……无语,大家仔细看图片,我的现金是22309730还有98800000的汽车固定资产,而现在排名第一的妹妹,总资产负4040,这个现今-20040加上汽车的16000(16000-20040= - 4040)算出来的,先不管她的现金是怎么变成负数的,呵呵,看看程序员是怎么犯这个错误的吧。

图片

照片名称:抢车位bug,强大的图片

 

      我开始以为是整数溢出了造成的bug,不过下面的第二名也是负数,他是负28360,如果是整数溢出的话,显示的总资产应该会不正确,因为进位会被直接丢掉了,所以计算这块应该是没有问题的,出问题的应该是比较的时候,估计这哥么想不可能有负数把,就随手写下了两个无符号数的比较,如是,问题产生了,还真就出现了负数:

      32位的无符号整数最大是(0xFFFFFFFF)2的32次方减1,4294967295

      把-4040换算成计算机表示(二进制补码)为:1111 1111 1111 1111 1111 0000 0011 1000 这个数如果当成一个无符号数是4294963256,同样-28360换算出来是4294938936,哈哈,确实一个第一,一个第二啊,而且比我的总资产121109730确实大多了。

      不过那个好友列表里面的排行是正确的,呵呵,可能这两部分是两个不同的人写的。嘿嘿。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值