1 以外の数字を入力してもこの機能が停止しない理由を理解していただきたいです。
int main(void) {
double sum,v;
while (scanf("%lf",&v)==1) {
printf("\t%.2f\n", sum += v);
}
入力が1と異なる場合はいつでも停止すると思われます。条件に関係していると思います。おそらく、それが行うと思う前に何かをチェックします。
1 以外の数字を入力してもこの機能が停止しない理由を理解していただきたいです。
int main(void) {
double sum,v;
while (scanf("%lf",&v)==1) {
printf("\t%.2f\n", sum += v);
}
入力が1と異なる場合はいつでも停止すると思われます。条件に関係していると思います。おそらく、それが行うと思う前に何かをチェックします。
この関数scanf
は、読み取った実際の値ではなく、一致して埋められたアイテムの数を返します。
正常に完了すると、これらの関数は、正常に一致して割り当てられた入力項目の数を返します。この数は、初期のマッチングの失敗の場合にゼロになることがあります。最初の一致の失敗または変換の前に入力が終了した場合、EOF が返されます。
したがって、コードでは、読み取りが成功scanf
すると常に返されます。代わり1
にテストする必要があります(ただし、ではありません)。v
==
scanf on success は、正常に読み取られたアイテムの数を返します。したがって、追加でチェックする必要がありますv == 1
。