1 回答

TA貢獻(xiàn)14條經(jīng)驗(yàn) 獲得超23個(gè)贊
#include<stdio.h> int?main() { char?a,?b,?c; scanf("%c",&a); scanf("%c",&b); scanf("%c",&c); printf("%c?%c?%c",?a,?b,?c); return?0; }
????首先,試著閱讀這段代碼,如果輸入123,那么輸出的結(jié)果為將為1 2 3。
????在進(jìn)行程序輸入的時(shí)候,輸入并不是直接賦值給變量,而是先保存在輸入緩沖區(qū)中,當(dāng)按下回車鍵或者緩沖區(qū)滿了的時(shí)候,才會(huì)賦值給變量。
????現(xiàn)在來模擬一下這個(gè)代碼,在鍵盤中輸入123,123將會(huì)被放入輸入緩沖區(qū),按下回車鍵后,開始向程序中寫入內(nèi)容,寫入內(nèi)容的時(shí)候遇到了第一個(gè)scanf語句,發(fā)現(xiàn)這個(gè)語句需要一個(gè)字符,則將1賦值給了變量a,然后繼續(xù)向下走,遇到了第二個(gè)scanf語句,發(fā)現(xiàn)這個(gè)語句也是需要一個(gè)字符,然后將2賦值給了變量b,然后繼續(xù)向下走,遇到了第三個(gè)scanf語句,發(fā)現(xiàn)這個(gè)語句仍然需要一個(gè)字符,然后3賦值給了變量c,此時(shí)輸入結(jié)束,并且緩沖區(qū)也變?yōu)榱丝?,程序中也沒有等待輸入的語句了,則執(zhí)行了最后的printf語句,輸出了三個(gè)變量的值。
????接下來思考你的代碼,本質(zhì)上兩個(gè)代碼的區(qū)別就是我的代碼多了兩行的scanf語句,所以知道為什么你的代碼輸入123的時(shí)候輸出是1了吧。
- 1 回答
- 0 關(guān)注
- 1147 瀏覽
添加回答
舉報(bào)