• 抢车位中的排名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确实大多了。

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

  • 相关阅读:
    【leetcode】1. Two Sum
    【leetcode】32. Longest Valid Parentheses
    【leetcode】20. Valid Parentheses
    scala细节
    【转】CentOS下firefox安装flash说明
    Spring 容器(一)
    源码学习快捷键
    Gradle编译spring3.x报错找不到itextpdf4.2.2解决方案
    Insertion Sort
    Bubble Sort
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4295162.html
Copyright © 2020-2023  润新知