这是一段错误的代码。
(如算法错误,双精度sum用整型定义,直接写(-1)的n次方等)
但我发现了一个很奇怪的现象:
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int sum;
int main()
{
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
{
double a=(double)1/n;
int b=n-1;
int z=(-1)^b;
printf("%.4lf %d %d\n",a,b,z);
sum+=(double)z*a;
}
printf("%.4lf\n",sum);
return 0;
}
为什么中间的变量输出(printf("%.4lf %d %d\n",a,b,z);)
会改变结果输出?
如:将该句注释掉后,输出为:
但将该句取消注释后变为:
可见答案从0.0000变为0.5000;
(ps.本人初学,还请细心解释,非常感谢)