艾欧尼亚吧 关注:2,430,824贴子:180,618,237

现在联盟改的啥也不是

只看楼主收藏回复

INT_MIN = -2^31 = -2147483648,补码表示为0x80000000,出现这个bug,大概率是因为每次变更装备后,首先将变量初始化成INT_MIN,再执行伤害计算逻辑,但由于某种原因,该逻辑没能正常运行,导致伤害计算出现BUG。伤害明明是INT_MIN = -2147483648,这是一个负值。C++不是类型安全的语言,在计算过程中存在数据溢出,当一个数a∈[2^31,2^32)时,程序会将其解释为一个负值,这就导致了当伤害为INT_MIN时,任意一次攻击下,敌方的血量都会降至负值,也就是所谓的秒杀


IP属地:四川1楼2020-11-13 14:05回复
    在哪复制粘贴来的


    来自Android客户端2楼2020-11-13 14:07
    收起回复
      🐂🍺 一点也没看懂


      IP属地:广东来自iPhone客户端4楼2020-11-13 14:10
      回复
        说得好 我看不懂


        IP属地:广东来自Android客户端8楼2020-11-13 14:12
        回复
          🐂。 明天来上班吧。


          IP属地:浙江来自iPhone客户端9楼2020-11-13 14:13
          收起回复
            补码表示为0x80000000?


            IP属地:北京10楼2020-11-13 14:15
            收起回复
              好聪明的女生


              11楼2020-11-13 14:15
              收起回复
                明天来上班 梨花黑


                来自iPhone客户端13楼2020-11-13 14:18
                收起回复


                  IP属地:湖北来自Android客户端15楼2020-11-13 14:21
                  回复
                    啥时候来上班


                    IP属地:广东来自iPhone客户端16楼2020-11-13 14:23
                    回复
                      🐂


                      来自iPhone客户端17楼2020-11-13 14:23
                      回复


                        IP属地:广东来自Android客户端18楼2020-11-13 14:35
                        回复
                          老程序员了


                          IP属地:广东19楼2020-11-13 14:37
                          收起回复
                            我猜你是个秃子


                            IP属地:福建来自iPhone客户端20楼2020-11-13 15:06
                            收起回复
                              所以红蓝buff剩1点血怎么解释


                              IP属地:江苏来自Android客户端21楼2020-11-13 15:56
                              收起回复