C溢出还是什么?

use*_*770 2 c overflow

我正在读取两个数字数组及其长度,并试图找到每个数组的总和.

我认为它是正确的,但对于其他部分,我不知道发生了什么?有人可以看看它并帮助我吗?

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);
Run Code Online (Sandbox Code Playgroud)

对于这段代码,我可以有效地获得smun但是snum总是错的?即

for input:

 5
-2 -1 0 1 2
6
-3 -2 -1 1 2 3
my out put is: 0 -291502240
Run Code Online (Sandbox Code Playgroud)

dee*_*han 5

您需要将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);
Run Code Online (Sandbox Code Playgroud)

当为变量分配地址时,它会获取该特定地址的数据,我们将其视为垃圾或垃圾值.第一个输出是正确的,因为你很幸运,地址中的值也是零.