C语言数组赋值错误问题

问题遇到的现象和发生背景

在做一道算法题时遇到的

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<math.h>
#define x 2<<30-1
int main(void)
{
    static int N[x] = {0};
    int n=5; //矩形个数 
    int x1, x2, h;
    int i, j;
    int k;
    int max = 0;
    for(i=0; i<n; i++)
    {
        scanf("%d %d %d", &x1, &x2, &h);
        for(j=x1; j<=x2; j++)
        {
            if(h>N[j])
            {
                N[j] = h;
            }        
        }
        if(x2 > max)
        {
            max = x2;
        }
        for(k=0; k<=max; k++)
        {
        printf("%d : %d\n", k, N[k]);
        }
    }    
}

运行结果及报错内容

2 10 5
0 : 0
1 : 0
2 : 5
3 : 5
4 : 5
5 : 5
6 : 5
7 : 5
8 : 5
9 : 5
10 : 6487024
5 15 10
0 : 0
1 : 0
2 : 5
3 : 5
4 : 5
5 : 10
6 : 10
7 : 10
8 : 10
9 : 10
10 : 6487024
11 : 10
12 : 10
13 : 10
14 : 10
15 : 10

我的解答思路和尝试过的方法

这段代码看似没问题,但运行时会出现赋值错误,报错里的第10项,本来应该为5或者10,但现在结果错误,找不到原因

我想要达到的结果

猜测可能是什么溢出造成的,求指点

这里:


#define x 2<<30-1
......
static int N[x] = { 0 };

数组太大,数组的总大小不得超过 0x7fffffff 字节,可以查看文档:编译器错误 C2148 | Microsoft Docs

代码没问题,我运行试了也没问题,但你这出现了异常确实很诡异,可以试试重启电脑。

img