请问为什么报错?报错不懂

请问以下代码为什么错?报错看不懂。谢谢


#include
using namespace std;
int n,m;
int main(){
    cin>>n>>m;
    int jz[n][m];
    for(int x=0;x<=n;x++){
        for(int y=0;y<=m;y++)
        cin>>jz[x][y];
        cout>>"x">>x>>endl>>"y">>y>>endl>>"数">>jz[x][y];
    }
}

两个for循环的结束条件改一下, x=n,或者y=m会访问jz数组越界,因为jz行最大下标是n-1,列最大下标是m-1.

 
#include<bits/stdc++.h>
using namespace std;
int n,m;
int main(){
    cin>>n>>m;
    int jz[n][m];
    for(int x=0;x<n;x++){
        for(int y=0;y<m;y++)
        cin>>jz[x][y];
        cout>>"x">>x>>endl>>"y">>y>>endl>>"数">>jz[x][y];
    }
}

数组大小是n行m列,你的for循环只能到x<n和y<m,是不可以相等的,如果x=n或者y=m,就越界了,因为下标从0开始,最大下标值比数组大小要小1