次のプログラムを実行すると:
#include <stdio.h>
#include <math.h>
int main()
{
double sum, increase;
long amount, j;
printf("sum = ");
scanf("%lf", &sum);
printf("increase = ");
scanf("%lf", &increase);
printf("amount = ");
scanf("%ld", &amount);
for (j = 1; j <= amount; j++)
{
sum += increase;
}
printf("%lf\n", sum);
return 0;
}
これらの値に対して次の応答が得られます。
MacBook:c benjamin$ ./test
sum = 234.4
increase = 0.000001
amount = 198038851
432.438851
MacBook:c benjamin$ ./test
sum = 234.4
increase = 0.000001
amount = 198038852
432.438851
MacBook:c benjamin$ ./test
sum = 234.4
increase = 0.000001
amount = 198038853
432.438852
ここで、変数「金額」をそれぞれの場合で 1 ずつ増やしました。
- 最初のものでは、合計は私が期待するものを提供します。
- 2 番目では、驚くべきことに同じ値が得られます。
- 3 番目では、合計が続きます。
なぜこれが起こるのですか?
コードはあまり役に立たないように見えますが、問題の部分だけを書きました。私は実際にそれをより大きなプログラムで使用したかったのです。
ありがとう!