将一个字母a赋给int型变量,运行第一个是无限循环的,为什么呀?谢谢呀

限制i在1~9

//无限循环
void main()
{
int i;
scanf("%d",&i);
while(i9)
{
printf("error,enter again:");
scanf("%d",&i);
}
}

//正常
void main()
{
int i,f;
if((f=scanf("%d",&i))!=1||i9)
{
if(f!=EOF)
while(getchar()!='\n');
printf("error,enter again:");
}

为什么要把String赋值给int?

void main()
{
int i;
scanf("%d",&i);
while(i>9) //i>9的时候执行循环,如果你的值一直是大于9,那么就会一直执行循环体
{ //只有当i<=9时,结束循环
printf("error,enter again:");
scanf("%d",&i);
}
}