当我运行以下程序时:
我得到了以下这些值的响应:
#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
在每种情况下,我将变量"amount"增加1。
- 在第一个例子中,求和得到了我预期的结果。
- 在第二个例子中,令人惊讶的是,它给出了相同的值。
- 在第三个例子中,它继续求和。
为什么会发生这种情况?
虽然代码似乎并不是很有用,但我只是写出了有疑问的部分。实际上我想在一个更大的程序中使用它。
谢谢!