换行符与空格在scanf函数里面到底有什么区别呢?

比如说scanf("%d",&a),当我们输入一个数值过后再按回车键,那么这个时候就停止输入并开始执行后面的语句了,可是当我们输入数值之后按空格键,光标却只会向后挪一位,不会自动执行后面的语句。
但是在scanf里面,当我要读取输入多个数值时,两个数值之间既可以用空格,又可以用回车来结束,这个时候空格和换行符就是等价的了,但是为什么在末尾的时候会不一样呢?