работа функции getchar() в цикле while
Есть вот такая вот функция:
int function(){
int n;
while(!scanf("%d",&n))
{
printf("You didn't enter a number. Try again.\n");
while((n=getchar())!='\n');
}
return n;
}
Вопрос состоит в том, каким образом работает вложенный цикл while, и как вся эта конструкция зацикливается. Я не совсем понимаю, например, что делает (n=getchar())!='\n', и что происходит при повторном вводе. Какая строка срабатывает?