谁能解释下这段简单程序

#include <stdio.h> int main() { int a[3]; int i; for (i = 0; i < 3; ++i) scanf("%d ", &a[i]); for (i = 0; i < 3; ++i) printf("%d ", a[i]); printf("\n"); }
scanf里不加空格,结果肯定是对的,但这里多加了一个空格,结果就不对了
这个应该和输入缓冲区有关,但自己又想不清楚,谁能帮忙解释下啊

[ 本帖最后由 黄河十三号 于 2012-8-13 23:40 编辑 ]