为什么我的数组值会更新为随机值?

Why did my array values get updated to random values?

本文关键字:随机 更新 我的 数组 为什么      更新时间:2023-10-16

>我有一个 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;
}
}

输出:

1       3       5  
2       4       -10  
++++++++++++++++++++++++  
1       4       8  
7       4       3  

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

您对row的计算不正确:

int row{sizeof(sizeof(grid)/sizeof(grid[0]))};

这给出了8的值(在我的机器上,但通常它给出了int的大小(。你在那里有一个额外的sizeof。这意味着您将在第二个循环中通过越界索引来调用未定义的行为。

而是做:

int row{sizeof(grid)/sizeof(grid[0])};

根据需要提供2

这是一个演示。