全境封锁2吧 关注:151,809贴子:3,579,578
  • 14回复贴,共1

问一下这个伤害为什么会出现负数?

只看楼主收藏回复

如题


IP属地:贵州来自iPhone客户端1楼2025-11-12 18:13回复
    数值溢出了,说明你已经是老手了


    IP属地:安徽来自Android客户端2楼2025-11-12 18:15
    回复
      2026-02-24 15:02:43
      广告
      不感兴趣
      开通SVIP免广告
      当年的武器伤负数称之为华佗,现在是叠加伤不是武器伤。华佗很难再临了。


      IP属地:浙江3楼2025-11-12 18:15
      收起回复
        为什么打完没给东西啊


        IP属地:北京来自iPhone客户端4楼2025-11-12 18:17
        回复
          打满一圈继续打,数据溢出就是负数。负一圈再继续甚至能再正过来


          IP属地:江苏来自iPhone客户端5楼2025-11-12 18:18
          回复
            伤害有上限 超过这个上限就变成负的 负的也有上限 再超过就变正的 循环往复


            IP属地:浙江来自Android客户端6楼2025-11-12 18:28
            收起回复
              正常显示到2199M,也就是21亿多。到了22亿开始显示为负数。会从负21依次到0,然后第三轮继续为正循环。比如你-2033M,实际打了22亿多。旁边那个-984M,实际是21减9等于12,再加上21亿,大概33亿左右。


              IP属地:浙江来自iPhone客户端7楼2025-11-13 00:33
              回复
                楼上说的对都


                IP属地:江西来自Android客户端8楼2025-11-13 01:11
                回复
                  2026-02-24 14:56:43
                  广告
                  不感兴趣
                  开通SVIP免广告
                  这游戏C++写的,伤害用int32类型表示32位的二进制数,做高位是符号位
                  int32 的最大值是 2147483647,再+1最高位就会变负数-2147483648
                  就像钟表一样,在最大值和最小值之间来回递增或递减


                  IP属地:江苏9楼2025-11-13 11:49
                  回复
                    说明游戏一开始就没料到32位的数据类型居然已经展示不全日益膨胀的数值


                    IP属地:上海来自Android客户端10楼2025-11-13 12:51
                    回复
                      估计是这个伤害值使用了INT类型的存储,INT只能存-2,147,483,647到2,147,483,647,大小


                      IP属地:重庆11楼2025-11-13 19:07
                      回复
                        形象点说,把伤害打穿了


                        IP属地:辽宁12楼2025-11-15 14:49
                        回复