原创  诡异的bug 收藏


      其中呢,D1和D2都是JInt32的,我们假设D1就是16(15,14都行啦,总之是一个比较小的数,这个问题中他不是关键所在),D2是由一个32位的二进制转换成的JInt32。当D2对应的二进制数最高位是1的时候,D2是一个负数。然后用上边的代码进行转换,这时,问题发生了,result始终等于D2,无法按照预想变成一个高位是D1低位是D2的数。

      我无奈。。。我思考。。。Why?

      调了N久的bug之后,终于找到小强了(拍死它!!)。

      D2会被首先转成一个JInt64,然后才参与计算,这个转换成的JInt64呢,高位全都是1,因为D2是负数嘛。。。一失足成千古恨啊,这个错误居然让它在代码中存在了好久。。。

      不过,更诡异的不是这个。随后,改成这样----->(JUint64)D2;结果发现,转换后的JUint64,居然高位依然都是1,还是负数。。。这个我就彻底费解了,随后进行了一系列试验,发现只有先把D2转换成JUint32,再转JUint64,这个问题才解决。最后,我只好用了个土鳖的方法写这个代码:


至于为什么不能直接转成JUint64,也请各路高人帮着解答一下了!!


发表于 @ 2009年06月07日 12:17:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:再一次开博喽! | 新一篇:又愤青了之好色的股哥

  • 发表评论
  • 评论内容:
  •  
Copyright © shengnan007
Powered by CSDN Blog