while(!scanf("%d",&n)) 这个条件是怎么判断的?

不明白这个条件怎么判断,另外循环里还有一句fflush(stdin)也没懂什么意思,求大神指教

scanf()返回的是符合格式的变量的个数,scanf("%d",&n)返回值就是输入的整数的个数。
现在这个条件的判断是当输入整数的为0的话,进入while循环。fflush(stdin)是为了清空输入缓冲区的缓存。
一般用在scanf之前,确保scanf接收到正确的输入内容。

scanf()返回的是符合格式的变量的个数,fflush(stdin)是为了清空输入缓冲区的缓存

scanf是输入函数,
scanf(“%d”,&n)就是让你输入一个整数,并且把你输入的数字赋值给变量n,&是取地址操作符,获取变量n的地址

scanf实际上是c的一个标准库函数,会返回一个value。

输入的不是数字,scanf返回的是true;同理,输入的是数字,scanf返回的是false。前面那个感叹号是读作“非”,也就是,非等于。。

强烈怀疑你的代码是while(!scanf("%d",&n));//注意最后多了一个分号
首先scanf函数的返回值是成功从终端读入的数据量的个数,
在你这里想要输入的是一个整数并存到变量n中,
如果你实际键入的不是数字,那么scanf函数返回的就是0,那么在!运算符的作用下while后面的括号里的内容实际为真,那么就会执行循环体的内容。
在这里,循环体的内容仅有一个分号,也就是空语句,实际上什么都没有操作,然后再一次的调用scanf函数。
调用scanf函数意味着需要重新输入一次,如此反复,直到某一次输入的量是int,将其存储到变量n中。
因为实际上成功读入了变量n的值,那么scanf函数的返回值应该为1,在!运算符的作用下,整体的值为false,结束循环,成功的读入到了n的值。

scanf是个函数,怎么判断就要看他的返回值了吗,你去了解下这个函数的返回值就知道他的结束条件是什么了