为什么只是调换下int和char的顺序结果却不一样?

inta=0;charb=0;scanf("%d",&a);printf("a=%d\n",a);scanf("%c",&b);printf("b=%c\n",b);in... int a=0;
char b=0;
scanf("%d",&a);
printf("a=%d\n",a);

scanf("%c",&b);
printf("b=%c\n",b);

int a=0;
char b=0;
scanf("%c",&b);
printf("b=%c\n",b);

scanf("%d",&a);
printf("a=%d\n",a);
第一张图的数据要连着输入才能正常运行,
而第二张要先输入一个回车后再输入,请问这是怎么回事?
展开
 我来答
zjfaok
2014-08-19 · TA获得超过6806个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1607万
展开全部

前者输入

5p

输出

a=5
b=p



后者输入

p5


输出

b=p
a=5

不知你说的结果不一样是什么意思

----------------------------------------------------------------------------------------------------------------

当然输入不一样于是输出不一样是再正常不过的事情,多一个回车少一个回车结果不同应该是在预期之内的

更多追问追答
追问

第一个程序只有输入p5再按回车才能正常输出,但是第二个可以输入p然后按回车再按5,他们输出的形式不同,求大神打救!我就是想问下为什么只是换下int和char的输出顺序结果却不一样?为什么前者必须要直接输入2个数,后者可以先输入一个回车后再输一个?

追答

我想你需要的回答是这个:


scanf 的所有格式控制符中,只有 %c 是不忽略空白字符(空格、TAB、回车)的。也就是说 %d 如果遇到空白字符会直接忽略,直到遇到非空白字符;但是 %c 如果遇到空白字符会直接把这个字符赋给 scanf 的对应参数。


scanf (" %c", &ignore_me );

%c前的空格同样会使得 scanf 忽略所有空白字符

就是拽的狠
2014-08-19
知道答主
回答量:18
采纳率:100%
帮助的人:7.3万
展开全部
什么意思 没有看懂,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e2d26298e
2020-10-10
知道答主
回答量:1
采纳率:0%
帮助的人:564
展开全部
我也想问这个问题,但是下面的回答都不是我想要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式