开发者社区> 问答> 正文

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

#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()输入的数值清零?

展开
收起
a123456678 2016-03-23 13:54:27 2123 0
1 条回答
写回答
取消 提交回答
  • 因为abc都是char,而你用了%d,而scanf不会对类型做检查,因此它冲掉了c之后的那个变量,因为堆栈是倒过来的,而a在前面,就冲掉了。

    2019-07-17 19:10:51
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载