C溢出还是什么?
C overflow or what is it?
我正在读取两个数字数组及其长度,并试图求出每个数组的总和。
一方面我说对了,但另一方面,我不明白发生了什么事?有人可以看看它并帮助我吗?
int m, n, snum, i, smun;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++) {
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
对于这段代码,我可以有效地得到 smun 但是 snum总是错的?
即
for input:
5
-2 -1 0 1 2
6
-3 -2 -1 1 2 3
my out put is: 0 -291502240
很多未定义的行为,因为你做了
int m,n,snum,i,smun;
然后累加到 snum 未初始化
snum+=num[i];
做类似
的事情
int m = 0;
int n = 0;
int snum = 0;
int i = 0;
int smun= 0;
将提供正确的初始化和结果
你没有初始化snum和smun,应该先snum = 0; smun = 0;
再操作sum。
您需要将 sum 变量初始化为某个值。
int m,n,snum,i,smun;
snum=0;
smun=0;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++){
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
当为变量分配一个地址时,它会获取该特定地址的数据,我们将其视为垃圾值。第一个输出是正确的,因为你很幸运,地址中的值已经为零。
我正在读取两个数字数组及其长度,并试图求出每个数组的总和。
一方面我说对了,但另一方面,我不明白发生了什么事?有人可以看看它并帮助我吗?
int m, n, snum, i, smun;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++) {
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
对于这段代码,我可以有效地得到 smun 但是 snum总是错的? 即
for input:
5
-2 -1 0 1 2
6
-3 -2 -1 1 2 3
my out put is: 0 -291502240
很多未定义的行为,因为你做了
int m,n,snum,i,smun;
然后累加到 snum 未初始化
snum+=num[i];
做类似
的事情int m = 0;
int n = 0;
int snum = 0;
int i = 0;
int smun= 0;
将提供正确的初始化和结果
你没有初始化snum和smun,应该先snum = 0; smun = 0;
再操作sum。
您需要将 sum 变量初始化为某个值。
int m,n,snum,i,smun;
snum=0;
smun=0;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++){
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
当为变量分配一个地址时,它会获取该特定地址的数据,我们将其视为垃圾值。第一个输出是正确的,因为你很幸运,地址中的值已经为零。