为什么输入1的以下功能没有停止?

时间:2012-05-13 20:41:25

标签: c

我希望您能帮助我理解当我输入任何其他数字时,为什么此功能不会停止。

int main(void) {

double sum,v;

while (scanf("%lf",&v)==1) {
    printf("\t%.2f\n", sum += v);

}

看起来假设只要输入与1不同就停止。我相信它与条件有关,也许它会在我认为它之前检查一些东西。

2 个答案:

答案 0 :(得分:4)

函数scanf返回匹配和填充的项目数,而不是它读取的实际值。

  

成功完成后,这些功能将返回数字   成功匹配并分配输入项目;这个数字可以为零   如果早期匹配失败。如果输入结束之前   第一次匹配失败或转换,应退回EOF。

因此,在您的代码中scanf将始终返回1以便成功阅读。您应该测试v(而不是==)。

答案 1 :(得分:0)

scanf on success返回成功读取的项目数。因此,您还需要检查v == 1