为什么while((a=scanf("%d",&i))!=-1)这个循环永远不会退出?

做题时编写了如下代码,但是无论如何都不能结束循环。希望帮助。
include

int main() {

int a , i , num[3] , j=0;

while((a=scanf("%d",&i))!=-1) {

if(a) {

num[j++] = i;

}

}

printf("%d\n",num[0]*num[1]*num[2]%1000);

}

2个修改办法
while((a=scanf("%d",&i))!=EOF)
这样写,按ctrl+z 结束循环
while((scanf("%d",&i), i)!=-1)
这样写,输入-1结束循环

while((a=scanf("%d",&i))!=-1)
我的理解执行顺序为
scanf("%d",&i))!=-1
a=scanf("%d",&i))
后面一个 是赋值语句 永远为true所以不会停止

因为scanf只读取数值不读取字符,字符就会留在缓冲区相当于下一次输入,所以就死循环了