lz刚刚看了b站一个周卓刷十亿攻击的视频(很早就看过了,当时没细想),但是再翻倍到二十亿就go die了,这是为什么呢? 可以看 http://www.bilibili.com/video/av2849682/
答案是2147483647,当任何随从的生命值高于2147483647时,死亡=_=!
其实这很简单,随从设计的时候,生命值的数据类型是有符号位的32位数(int32 health)。
大小范围为 -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)
视频中的周卓从十亿翻倍到二十亿时,具体数字简单计算为2147483648,正好超过了最大数字1点。
那么根据计算机二进制编码里面补码的规则,实际上2147483648会存储为一个负数(-2147483648..)。
所以程序就无情地根据这个负了二十多亿的生命值给周卓判了死刑~
应该是原创吧= =求点经验
答案是2147483647,当任何随从的生命值高于2147483647时,死亡=_=!
其实这很简单,随从设计的时候,生命值的数据类型是有符号位的32位数(int32 health)。
大小范围为 -2^31(-2 147 483 648) ~ 2^31-1(2 147 483 647)
视频中的周卓从十亿翻倍到二十亿时,具体数字简单计算为2147483648,正好超过了最大数字1点。
那么根据计算机二进制编码里面补码的规则,实际上2147483648会存储为一个负数(-2147483648..)。
所以程序就无情地根据这个负了二十多亿的生命值给周卓判了死刑~
应该是原创吧= =求点经验