錕斤拷燙燙燙是搞笑梗,出自程序猿,吐槽寫程序的痛苦。
首先錕斤拷也是,棍斤拷。源於GBK字符集和Unicode字符集之間的轉換問題。Unicode和老編碼體系的轉化過程中,肯定有壹些字,用Unicode是沒法表示的,Unicode官方用了壹個占位符來表示這些文字,這就是:U+FFFD REPLACEMENT CHARACTER。
那麽U+FFFD的UTF-8編碼出來,恰好是 '\xef\xbf\xbd'。假設這個'\xef\xbf\xbd',反復多次,比如 '\xef\xbf\xbd\xef\xbf\xbd',然後放到GBK/CP936/GB2312/GB18030的環境中顯示的話,壹個漢字2個字節,終於的結果就是:錕斤拷——錕(0xEFBF),斤(0xBDEF),拷(0xBFBD)。
其次燙燙燙亂碼:在windows平臺下,ms的編譯器(也就是vc帶的那個)在 Debug 模式下,會把未初始化的棧內存所有填成 0xcc,用字符串來看就是"燙燙燙燙燙燙燙",未初始化的堆內存所有填成0xcd,字符串看就是“屯屯屯屯屯屯屯屯”。也就是說出現了燙燙燙,趕緊檢查初始化。
計算機編程執行原理:
計算機對除機器語言以外的源程序不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的。
這種將高級程序設計語言編寫的源程序轉換到機器目標程序的方式有兩種:解釋方式和編譯方式。
解釋方式下,計算機對高級語言書寫的源程序壹邊解釋壹邊執行,不能形成目標文件和執行文件。
編譯方式下,首先通過壹個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的源程序轉換為用二進制代碼表示的目標程序。
然後通過連接程序處理將程序中所用的函數調用、系統功能調用等嵌入到目標程序中,構成壹個可以連續執行的二進制執行文件。調用這個執行文件就可以實現程序員在對應源程序文件中所指定的相應功能。