彙編中乙個有趣的問題

2021-08-22 10:46:31 字數 870 閱讀 8613

intmain()

問題是下面哪個關係成立:

&a>&b>&c還是&a<&b<&c?

我們知道區域性變數是存放在棧中的,a先push,然後是b,最後是c。

而棧指標sp是從高位址→低位址方向移動的,所以&a>&b>&c。

如果void f(int a ,int b, int c)

這裡就是&a<&b<&c,因為引數是逆序進棧的。

網上有關"回車"和"換行"的乙個有趣說法

"回車"(carriage return)和"換行"(line feed)這兩個概念的來歷和區別:

在計算機還沒有出現之前,有一種叫做電傳打字機(teletype model 33)的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元:

乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;

另乙個叫做「換行」,告訴打字機把紙向下移一行。

這就是「換行」和「回車」的來歷,從它們的英語名字上也可以看出一二。

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。

unix系統裡,每行結尾只有「《換行》」,即「\n」;

windows系統裡面,每行結尾是「《換行》《回車》」,即「\n\r」;

mac系統裡,每行結尾是「《回車》」。

乙個直接後果是,unix/mac系統下的檔案在windows裡開啟的話,所有文字會變成一行;而windows裡的檔案在unix/mac下開啟的話,在每行的結尾可能會多出乙個^m符號。

彙編中乙個有趣的問題

int main 問題是下面哪個關係成立 a b c還是 a b c?我們知道區域性變數是存放在棧中的,a先push,然後是b,最後是c。而棧指標sp是從高位址 低位址方向移動的,所以 a b c。如果void f int a int b,int c 這裡就是 a b c,因為引數是逆序進棧的。網上...

C中乙個有趣的列印

在lresult sendmessage hwnd hwnd,handle of destination window uint msg,message to send wparam wparam,first message parameter lparam lparam second messag...

PHP中乙個有趣的preg replace函式詳解

0x01 起因 事情的起因是下午遇到了 preg replace 函式,我們都知道 preg replace 函式可能會導致命令執行。現在我們來一些情況。0x02 經過 踩坑1 測試 大概是這樣的 foreach get as regex value 測試過程中發現通過瀏覽器的方式傳入資料的時候,會...