写个有意思的事吧~

如题

嗐,好多天没有写了,今天记录下吧~,挺有意思的,但原谅本人非计算机专业,不知道作何解释
先看一段代码:

//先读入整数型,再读入字符型
 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的值
为什么呢?,换行符呢?
我也有大大的疑问,换行符呢?
不过该总结还是总结:
先输入整数型,再输入字符型时,后续字符会把前面残留的换行符也读入
先输入字符型,再输入整数型时,换行符不会读入,该怎样输入就怎样输入
其实记忆也好记,因为换行符本身就是一个字符型数据,所以第一种情况会将其读入。
有知道第二种情况中换行符去哪里的小伙伴可以评论区分享。(* ̄︶ ̄)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值