2 回答

TA貢獻1829條經(jīng)驗 獲得超7個贊
這個問題問的好。
你問題的第二種情況是說如果輸入多個字符類型數(shù)據(jù)的情況。
如果是這樣,請注意,除非,如果scanf后面的格式是%c的,那么它只能吸收你輸入的一個字符,后面的東西全部放在緩存區(qū)。也就是說,你再接上一個scanf( "%c", &c),它會繼續(xù)吸收你前面沒有吸收到的字符。
如果下面語句段:
scanf( "%c", ch1 );
scanf( "%c", ch2 );
scanf( "%c", ch3 );
你輸入"ab"后按回車。那么,a被ch1吸收,b被ch2吸收,ch3呢?你是不是以為沒有東西吸收?其實你輸入ab后按了回車,所以回車被ch3吸收了。這點一定要小心。
你的問題第一種情況就明顯很多了。
比如你的scanf語句吸收格式字段是%4f,但是你輸入了3.1415926那么,它只會吸收3.14,作為浮點類型。后面的15926以整型的方式存在于緩存中。
學C語言一定要不停的去體悟它的輸入輸出,個人覺得它的重要性僅次于指針。

TA貢獻1829條經(jīng)驗 獲得超4個贊
scanf("%4d",&a);表示若輸入小于或等于四位,則原樣輸出,若輸入大于四位,從左到右截取你輸入的字符
scanf("%-4d",&a);表示若輸入小于或等于四位,則原樣輸出,若輸入大于四位,從右到坐截取你輸入的字符
添加回答
舉報