好奇怪,声明变量必须在数组声明之前???

看个小代码,前后只是改变了i,j声明的位置,可第二个报错

 /*用循环语句构造方阵*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int i,j;
    static int a[5][5];     /*用static,可为其赋初值0*/
    a[0][0] = 5;    /*为a[0][0]赋初值,以此为基础通过运算得出其它结果*/
    for (i = 0; i < 5; i++)
        for (j = 0; j < 5 - i; j ++)
            a[i][j] = a[0][0] + i - j;      /*!!!通过观察发现每个数字与所处行列之间的关系*/
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
            printf("%-4d",a[i][j]);     /*格式输出构造的方阵*/
        printf("\n");
    }
    system("pause");
    return 0;
}
/*用循环语句构造方阵*/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    static int a[5][5];     /*用static,可为其赋初值0*/
    a[0][0] = 5;    /*为a[0][0]赋初值,以此为基础通过运算得出其它结果*/
    int i,j;
    for (i = 0; i < 5; i++)
        for (j = 0; j < 5 - i; j ++)
            a[i][j] = a[0][0] + i - j;      /*!!!通过观察发现每个数字与所处行列之间的关系*/
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
            printf("%-4d",a[i][j]);     /*格式输出构造的方阵*/
        printf("\n");
    }
    system("pause");
    return 0;
} 

图片说明

应该是你中英文的分号写错了,看自己的错误提示,第八行附近

我本以为是分号的问题,但确实不是,VS也没有报错说未识别的字符啊,到底是哪里的问题啊

图片说明
图片说明
我用编译器试了一下,没报错。