在调试的过程中发现了一个神奇的错误的代码
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,minn,mind;
int main(){
cin>>a>>b;
long long sum[b];
for(int i=0;i<b;i++)sum[b]=0;
for(int i=0;i<a;i++){
cin>>c;
minn=999999;
for(int j=0;j<b;j++){
if(sum[j]<minn){
minn=sum[j];
mind=j;
}
}
sum[mind]+=c;
}
minn=0;
for(int j=0;j<b;j++)cout<<sum[j]<<endl;
for(int j=0;j<b;j++){
if(sum[j]>minn)minn=sum[j];
}
cout<<minn;
return 0;
}
用样例一,它输出的结果是 6 6 8 8很明显答案错了
但如果将用于调试的那一段注释掉,却会输出4254849,测试多次输出都不变。用于测试的那一段只是单纯的输出,并没有改变值,为什么会出现这种玄学的情况?