while语句使用scanf()函数作为循环判定条件的疑问,该如何处理

while语句使用scanf()函数作为循环判定条件的疑问
while(scanf("%d", &a) == 1)

while(scanf("%d", &a))

小弟正在学习C Primer Plus,书中的示例程序很多都使用第一种格式,我觉得第二种和第一种效果一样,都是当scanf()函数没有读取到数值的时候退出循环,但是既然书中使用了第一种格式,我想一定是有原因的,请问是为什么呢?非常感谢!

------解决方案--------------------
看下C编程的规范
------解决方案--------------------
scanf的返回值是读取到变量的个数,while(scanf("%d", &a))这个是可以的,但是不够标准,也不好扩展。。。。
------解决方案--------------------
while(scanf("%d", &a) == 1)这个就比较好了,如果你输入两个数,那么可以while(scanf("%d%d", &a, &b) == 2)。。。。依次类推
------解决方案--------------------
作者怕新手看不懂啊。。。。呵呵。。。所以写易于理解的。。。
------解决方案--------------------
scanf("%d", &a)可能返回
-1:输入Ctrl+Z、回车
0:输入x、回车
1:输入1、回车