关于char a,b,c,%d,%c%d分两次用scanf函数输入,却清零了第一次的数值问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于char a,b,c,%d,%c%d分两次用scanf函数输入,却清零了第一次的数值问题

a123456678 2016-03-23 13:54:27 1296
#include
#include
main()
{
unsigned char a,b,c;

scanf("%d",&a);
printf("%d\n",a);
getchar();
printf("%d\n",a);
scanf("%c %d",&b,&c);

printf("%d,%c,%d\n",a,b,c);
}

这里使用了两次scanf,第一次输出两次a的值,都没有问题,到第二次scanf之后,a的值就发生了改变,实验过在同一行并不会发生问题,请问,为什么使用两次scanf,第二次会把第一次scanf()输入的数值清零?

分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:10:51

    因为abc都是char,而你用了%d,而scanf不会对类型做检查,因此它冲掉了c之后的那个变量,因为堆栈是倒过来的,而a在前面,就冲掉了。

    0 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章