最近在看《品悟C》这本好书,学到了很多!其中有一个不明白的地方!特向大家请教!
int n;
do
{
printf("Enter n(1--15):");//要求输入1--15的奇数
scanf("%d",&n);
}
while(!((n>=1)&&(n<=15)&&(n%2!=0));
里面说“如果输入一个非整数(如字母)的话,会陷入死循环!”我试过了,确实是死循环!但是不知道为什么!
此外,书中给出了解决方案:
int n;
while(scanf("%d", &n) == 0 || (n<1) || (n>15) || (n%2) == 0)
{
while( getchar() != '\n')
;
}
但是我看不懂是为什么?特别是那个getchar()有什么用?
int n;
do
{
printf("Enter n(1--15):");//要求输入1--15的奇数
scanf("%d",&n);
}
while(!((n>=1)&&(n<=15)&&(n%2!=0));
里面说“如果输入一个非整数(如字母)的话,会陷入死循环!”我试过了,确实是死循环!但是不知道为什么!
此外,书中给出了解决方案:
int n;
while(scanf("%d", &n) == 0 || (n<1) || (n>15) || (n%2) == 0)
{
while( getchar() != '\n')
;
}
但是我看不懂是为什么?特别是那个getchar()有什么用?
