我希望您能帮助我理解当我输入任何其他数字时,为什么此功能不会停止。
int main(void) {
double sum,v;
while (scanf("%lf",&v)==1) {
printf("\t%.2f\n", sum += v);
}
看起来假设只要输入与1不同就停止。我相信它与条件有关,也许它会在我认为它之前检查一些东西。
答案 0 :(得分:4)
函数scanf
返回匹配和填充的项目数,而不是它读取的实际值。
成功完成后,这些功能将返回数字 成功匹配并分配输入项目;这个数字可以为零 如果早期匹配失败。如果输入结束之前 第一次匹配失败或转换,应退回EOF。
因此,在您的代码中scanf
将始终返回1
以便成功阅读。您应该测试v
(而不是==
)。
答案 1 :(得分:0)
scanf on success返回成功读取的项目数。因此,您还需要检查v == 1
。