首页 新闻 会员 周边 捐助

为什么输出中间变量会影响最终结果?

0
[待解决问题]

这是一段错误的代码。
(如算法错误,双精度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.本人初学,还请细心解释,非常感谢)

127zero99的主页 127zero99 | 菜鸟二级 | 园豆:202
提问于:2019-12-22 16:20

有些字符被吃掉了,不知道你原来的代码到底是什么,没法说

jakio6 4年前
< >
分享
所有回答(1)
0

这个变量sum要初始化吧,不初始化结果是什么都不奇怪

jakio6 | 园豆:1325 (小虾三级) | 2019-12-24 00:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册