##关于数组的问题##

输出一个整数序列中最大的数和最小的数的差。
第一行为M,表示整数个数,整数个数不会大于10000;
第二行为M个整数,以空格隔开,每个整数的绝对值不会大于10000。
为什么数组内元素为输入的M时无法通过?

#include
#define SIZE 10001
int main()
{
int n,i,j,max=-SIZE,k,min=SIZE;
scanf("%d",&n);
int ar[n];//为什么此处为n无法通过,改为10001可通过
for(i=0;i
{
scanf("%d",&ar[i]);
if(max
{
max=ar[i];
}
if(min>ar[i])
{
min=ar[i];
}
}
printf("%d",max-min);
return 0;
}

无法通过是指编译报错吗?有些编译器支持这么写,有些不支持,只能用固定的值,写成 int ar[SIZE];

供参考:

#include <stdio.h>
#include <limits.h>  //修改
#define SIZE 10001
int main()
{
    int n, i, j, max = INT_MIN, k, min = INT_MAX; //修改
    scanf("%d", &n);
    int ar[SIZE];  //ar[n];//为什么此处为n无法通过,改为10001可通过 //修改
    for (i = 0; i < n; i++)
    {
        scanf("%d", &ar[i]);
        if (max < ar[i])
        {
            max = ar[i];
        }
        if (min > ar[i])
        {
            min = ar[i];
        }
    }
    printf("%d", max - min);
    return 0;
}