#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()输入的数值清零?
因为abc都是char,而你用了%d,而scanf不会对类型做检查,因此它冲掉了c之后的那个变量,因为堆栈是倒过来的,而a在前面,就冲掉了。
你用%d输入就把c之后的变量覆盖了
说句题外话,话说char类型为何还要用unsigned?