请帮小弟我解释一下这个scanf的读取方法

请帮我解释一下这个scanf的读取方法
#include "stdafx.h"
#include "stdio.h"

int main(void)
{
int a, b;
char ch;

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

return 0;
}


这个程序我输出12a时,我希望是a = 12, b是垃圾值,然后ch = a,但是结果是

请帮小弟我解释一下这个scanf的读取方法

我觉得a应该在输入流中等待读取,b没有读到它,ch应该会读到它,但是结果也没有?我的理解是哪里错了?

------解决方案--------------------
一下是个参考代码:
#include "stdafx.h"
#include "stdio.h"

int main(void)
{
int a, b;
char ch;

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

return 0;
}


输入 & 输出:
12ah
a = 12 b = -858993460 ch = a
------解决方案--------------------
因为你输入数据,以ENTER键结束输入时,它把ENTER键当做CH输入值,ENTER在系统里当成0
------解决方案--------------------
查看一下scanf() 函数的返回值,估计你就应该明白了。