懂C语言的进

题目是这样的 当输入流为“56789 012345a72”时,执行程序段
int c;
float x,y;
char c; scanf("%2d%f%f%c%d",&i,&x,&y,&c,&j);后,变量i,x,y,c,j的内容是i=56
x=789.000000
y=12345.000000
c='a'
j=72 ,但是不明白,前面取整型%2d,所以i=56,后面取%d,j怎么是72,不应该是7吗??

据我所知当你不限制读入整形多少位时他是全部读取。
你可以用下面两条程序体会下
#include<stdio.h>
main(){
int i;
scanf("%2d",&i);
printf("%d",i);
}

#include<stdio.h>
main(){
int i;
scanf("%d",&i);
printf("%d",i);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-01
不写%几默认是在允许范围内全部读取。第一个%2d,所以读2个给i,然后开始读x到0截止,小数点后没规定补6个0,继续读y,到a停止。
相似回答