当我使用终端命令编译和运行以下代码时(在linux mint sonya中)
gcc -o program program.c./program
我有一个分割错误。当我使用code::blocks IDE执行同样的操作时,不会出现任何错误。我知道当访问非法内存时会出现分段错误。发生了什么?

 #include <stdio.h>
    int main()
    {
    int t;
    scanf("%d",&t);
    for(t;t>0;t--)
        {
        int i,j,n,arr[n],sump=0,sums=0,total,ans;
        scanf("%d",&n);
        for(i=0;i<=n-1;i++) scanf("%d",&arr[i]);
        for(i=0;i<=n-1;i++,sump=0,sums=0)
                {
            for(j=0;j<=i;j++) sump=sump+arr[j];
            for(j=n-1;j>=i;j--) sums=sums+arr[j];
            if(i==0) ans=sump+sums;
            else if(ans>sump+sums) ans=sump+sums;
                }
        for(i=0;i<n;i++,sump=0,sums=0)
            {
            for(j=0;j<=i;j++) sump=sump+arr[j];
            for(j=n-1;j>=i;j--) sums=sums+arr[j];
                if(ans==sums+sump) break;
            }
        printf("%d\n",i+1);
        }

    }

最佳答案

您在声明arr[n]时没有初始化n的值。
那是不确定的行为…

09-29 22:09