c语言-为什么注释这样写就会报错,而上面那样写写就不会报错

 #include <stdio.h>
void main()
{
    //extern void print_int_array(int a[], int n);
    void print_int_array(int a[], int n);
    int i, j, t;        
    int flag = 1;
    //int i, j, t, flag;   //??????为什么注释这样写就会报错,而上面那样写写就不会报错
    //flag = 1;
    int a[5] = {5, 2, 1, 4, 6};
    while(flag)
    {
        flag = 0;
        for(i = 0; i < 5; i++)
        {
            for(j = 0; j < 5-i-1; j++)
            {
                if(a[j] > a[j+1])
                {
                    t = a[j];
                    a[j] = a[j+1];
                    a[j+1] = t;
                    flag = 1;   
                }
            }
        }
    }
    print_int_array(a, 5);
}

void print_int_array(int a[], int n)
{
    int i;
    for(i = 0; i < n; i++)
    {
        printf("%d\t", a[i]);
    }
    printf("\n");
}

可能你的赋值语句flag = 1;写在了int a[5] = {5, 2, 1, 4, 6}; 变量定义前面, 你把flag = 1;这句话放到int a[5] = {5, 2, 1, 4, 6};后面估计就行了,
你也没粘贴报错的信息啊,根据错误信息,一下就能定位错误啊。

图片说明

哪少了一个分号吧,按道理注释那样写也不会报错的

函数中,需要先书写变量定义,然后是操作。
你定义了flag,然后赋值,之后又有定义,所以报错。
当然可以定义的时候赋值,那样就不会报错。