C++ 为什么我的数组值被更新为随机值?

C++ 为什么我的数组值被更新为随机值?,c++,arrays,dev-c++,C++,Arrays,Dev C++,我有一个2行3列的网格。我执行的操作不更新网格的任何元素,而只是访问它。不知怎的,我的网格被随机值更新了 #include <iostream> using namespace std; int main(){ int grid[2][3]{{1,3,5}, {2,4,-10}}; int row{sizeof(sizeof(grid)/sizeof(grid[0]))}; int col{sizeof(grid[0])/sizeof(int)};

我有一个2行3列的网格。我执行的操作不更新网格的任何元素,而只是访问它。不知怎的,我的网格被随机值更新了

#include <iostream>
using namespace std;
int main(){

int grid[2][3]{{1,3,5},
                {2,4,-10}};
int row{sizeof(sizeof(grid)/sizeof(grid[0]))};
int col{sizeof(grid[0])/sizeof(int)};
int dp[3][4]{};
for(auto &y:grid){
    for(auto x:y){
        cout<<x<<"\t";
    }
    cout<<endl;
}
for(int i{1};i<=row;i++){
    for(int j{1};j<=col;j++){
        dp[i][j]=grid[i-1][j-1]+max(dp[i][j-1],dp[i-1][j]);
    }
}
cout<<"++++++++++++++++++++++++"<<endl;
for(auto &y:grid){
    for(auto x:y){
        cout<<x<<"\t";
    }
    cout<<endl;
}
}

当我在在线IDE上运行此代码时,就像我没有遇到问题一样。但是我使用的是devC++而不是我的代码,这可能是devC++的一些特定问题。

您对
行的计算不正确:

int row{sizeof(sizeof(grid)/sizeof(grid[0]))};
这给出了
8
(在我的机器上,但通常给出了
int
的大小)。您有一个额外的
sizeof
。这意味着您正在调用第二个循环中未定义的行为,方法是索引超出范围

相反,你应该:

int row{sizeof(grid)/sizeof(grid[0])};
根据需要提供
2


下面是一个。

当我运行您的示例时,我看到两个打印值相同。这是一个完整的例子吗?是的,所有这些都是主要的function@luxun是的,你说得对。当我在www.onlinegdb.com上运行您的代码时,devC++的问题也可能存在。这些值保持不变,但我得到了一个分段fault@yaodav,我明白了。我算错了。我的错
int row{sizeof(grid)/sizeof(grid[0])};