從編程角度看這次樂言利用bug上分事件

這些天玩英雄聯盟的人都知道峽谷之巔出了一件大事,LOL自遠古大神發呆以後還沒出現過如此嚴重、影響如此惡劣的bug。這次bug的出現由職業選手樂言首先發現,c++

但他並無選擇像發呆哥那樣向官方提交bug,反而利用bug上分,而且直播教網友卡bug,一時間峽谷哀鴻遍野,在人傳人之下影響甚廣,怒退遊戲者不可勝數。編程

網友戲稱樂言不能給你們帶來冠軍皮膚,那就送給大夥一個至死不渝吧,小樂言真是用心良苦。服務器

而在昨天,官方也對樂言作出了禁賽罰款處罰,關於樂言爲何頻頻作出蠢事,一手好牌打得稀爛在這裏就很少說了。架構

今天咱們從編程角度來講一下出現bug的緣由。遊戲

INT_MIN = -2^31 = -2147483648,補碼錶示爲0x80000000,出現這個bug,大機率是由於每次變動裝備後,事件

首先將變量初始化成INT_MIN,再執行傷害計算邏輯,但因爲某種緣由,該邏輯沒能正常運行,致使傷害計算出現BUG。服務器開發

有人可能會問,傷害明明是INT_MIN = -2147483648,這是一個負值,難道不會血越打越多嗎?開發

C++程序在計算過程當中存在數據溢出,當一個數a∈[2^31,2^32)時,程序會將其解釋爲一個負值,get

這就致使了當傷害爲INT_MIN時,任意一次攻擊下,敵方的血量都會降至負值,也就是所謂的秒殺。直播


好了,就寫到這裏吧,你對這次事件有什麼見解?

歡迎進羣973961276一塊兒聊聊技術吹吹牛,每週都會有幾回抽獎送專業書籍的活動

,獎品不甚值錢,但也算個搏個彩頭

缺少項目實戰經驗和想跳槽漲薪或是自我提高的朋友看這裏>>c/c++ 項目實戰/後臺服務器開發高級架構師

相關文章
相關標籤/搜索