相信這個标題,有十個人看,就有十個人搞不懂什麼意思。
隻有程序員才有可能點點頭,然後會心一笑。
似乎這是程序員才懂的某種黑話。
知乎上有個這樣的問題:“用一句話證明自己是程序員?”
“燙燙燙燙燙燙”
簡單幾行字,高贊上榜。
但是,這個“燙燙燙燙燙燙”到底是個啥意思?
莫非是程序對滾燙的CPU發出的控訴?
其實,答案非常簡單——亂碼。
道理我都懂,但為什麼亂碼偏偏是這串有點好笑的“燙燙燙燙燙燙”呢?
那就要從這段程序到底經曆了什麼開始講起了。
Visual Studio的編譯器分配完空間後,會順手往裡面裝進去一點内容。默認裝進去的東西也有幾種差别:
①未分配或靜态分配但未賦初值的内存空間,初值用0xCCCC填充;
②動态分配但未賦初值的内存空間,初值用0xCDCD填充;
③動态分配後又被回收了的内存空間,用0xDDDD填充;
正常情況下,這些内容是不會被訪問到的。當然,這是正常情況。
當發生一些bug,如非常常見的數組越界的時候,事情就發生了。
因為bug,剛好以字符輸出了情況①的填充内容,我們就會看到華麗而壯觀的……
我們知道,在中國,VS輸出漢字用的是GBK編碼。
是的,0xCCCC就是“燙”的GBK編碼!
順帶一提,0xCDCD對應的是漢字“屯”,而0xDDDD對應的是漢字“葺”。
這個bug實在是太常見了,“燙燙燙燙燙燙”也就順勢走紅,甚至被當成了黑話。
不過,這個bug不是每次都會以這個滑稽又有點可愛的形式出現。
隻有在按字符輸出的情況下才能看到這些。
按int輸出的話,看到的,隻有索然無味的
-858993460(0xCCCCCCCC)
-842150451(0xCDCDCDCD)
-572662307(0xDDDDDDDD)
GBK編碼确實為中國程序員帶來了很多意想不到的麻煩。但也為大家帶來了很多莫名其妙的歡樂。
比如名聲更大的神秘東方武器“锟斤拷”!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!