tft每日頭條

 > 圖文

 > 燙燙燙

燙燙燙

圖文 更新时间:2024-11-25 14:05:23

相信這個标題,有十個人看,就有十個人搞不懂什麼意思。

燙燙燙(燙燙燙燙燙燙)1

隻有程序員才有可能點點頭,然後會心一笑。

似乎這是程序員才懂的某種黑話。

知乎上有個這樣的問題:“用一句話證明自己是程序員?”

燙燙燙(燙燙燙燙燙燙)2

“燙燙燙燙燙燙”

簡單幾行字,高贊上榜。

燙燙燙(燙燙燙燙燙燙)3

但是,這個“燙燙燙燙燙燙”到底是個啥意思?

莫非是程序對滾燙的CPU發出的控訴?

其實,答案非常簡單——亂碼

燙燙燙(燙燙燙燙燙燙)4

道理我都懂,但為什麼亂碼偏偏是這串有點好笑的“燙燙燙燙燙燙”呢?

那就要從這段程序到底經曆了什麼開始講起了。

Visual Studio的編譯器分配完空間後,會順手往裡面裝進去一點内容。默認裝進去的東西也有幾種差别:

①未分配或靜态分配但未賦初值的内存空間,初值用0xCCCC填充;

②動态分配但未賦初值的内存空間,初值用0xCDCD填充;

③動态分配後又被回收了的内存空間,用0xDDDD填充;

正常情況下,這些内容是不會被訪問到的。當然,這是正常情況。

當發生一些bug,如非常常見的數組越界的時候,事情就發生了。

因為bug,剛好以字符輸出了情況①的填充内容,我們就會看到華麗而壯觀的……

燙燙燙(燙燙燙燙燙燙)5

我們知道,在中國,VS輸出漢字用的是GBK編碼。

是的,0xCCCC就是“燙”的GBK編碼!

順帶一提,0xCDCD對應的是漢字“屯”,而0xDDDD對應的是漢字“葺”。

這個bug實在是太常見了,“燙燙燙燙燙燙”也就順勢走紅,甚至被當成了黑話。

不過,這個bug不是每次都會以這個滑稽又有點可愛的形式出現。

燙燙燙(燙燙燙燙燙燙)6

隻有在按字符輸出的情況下才能看到這些。

按int輸出的話,看到的,隻有索然無味的

-858993460(0xCCCCCCCC)

-842150451(0xCDCDCDCD)

-572662307(0xDDDDDDDD)

GBK編碼确實為中國程序員帶來了很多意想不到的麻煩。但也為大家帶來了很多莫名其妙的歡樂。

比如名聲更大的神秘東方武器“锟斤拷”

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved