c语言,矩阵,加减运算,错误,求解

一个m行m列的矩阵每一行的所有元素求和
输出两个答案对了,另外两个错误?
运行结果如图:

img


希望能有错误理由

#include<stdio.h> 
int main()
{
    int m,i,j;
    scanf("%d",&m);
    int a[m][m];
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    int hang[m];
    for(i=0;i<m;i++)
    {
        for(j=0;j<m;j++)
        {
            hang[i]+=a[i][j];
        }
    }
    for(i=0;i<m;i++)
    {if(hang[i]!=0)
    printf("%d\n",hang[i]);
    }
    return 0;
    
}

你是如何做到定义一个变量数组还能运行程序的,按理来说应该运行会报错吧