
while (~scanf("%d", &n))与 while (scanf("%d", &n)是一样的效果吗?求大神详解前一个
展开全部
要解释这个问题,我们首先要知道scanf函数返回什么
根据
http://www.cplusplus.com/reference/cstdio/scanf/
他返回的是后面参数列表里面成功读取的个数
题目中
while (~scanf("%d", &n))
等价于
while (scanf("%d", &n) != -1)
也等价于
while (scanf("%d", &n) != EOF)
所以效果是读到文件结尾EOF的时候就跳出循环.
while (scanf("%d", &n))
则等价于
while (scanf("%d", &n) != 0)
所以效果就是当读取整数失败的时候跳出循环
追问
非常感谢,回答的好清楚,我就是不太明白为什么scanf取反了就等于while (scanf("%d", &n) != -1)了,能再解释下吗
追答
只有-1取反是0,所以取反不等于0就等价于不等于-1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询