c++ - 为什么它会 cout 在我们不在数组中 cin 的东西中?

标签 c++ arrays

当以下程序输入以下输入时(从 cin 读取):

1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1

输出令人惊讶:

1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1

#include<iostream>
using namespace std;
int main()
{
    int arey[3][3];
    int i,j;
    for(j=0;j<=3;j++)
    {
        for(i=0;i<=3;i++)
        {
            cin>>arey[j][i];
        }
    }
    arey[0][0]=1;
    arey[3][3]=1;
    i=0,j=0;
    for(j=0;j<=3;j++)
    {
        for(i=0;i<=3;i++)
        {
            cout<<arey[j][i];
        }
    }
    return 0;
}

有人可以解释我应该更改什么以获得与输入相同的输出吗?

最佳答案

矩阵是 3x3 还是 4x4?

您创建了 3x3 但循环运行了 4 个元素并且您还更新了 [3][3]

基本上,您的索引会溢出,您会覆盖矩阵中的不同单元格。

更新:检查您的输入,使用:int arey[4][4];

关于c++ - 为什么它会 cout 在我们不在数组中 cin 的东西中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6634543/

相关文章:

c++ - gdb 在 Emacs 中不接受 stdin 重定向

在指定的初始值设定项中复制数组

c++ - 静态数组和动态数组的区别

c++ - 使用 send() 发送大于 MSS 的数据

c++ - 调试错误 R6010 - 已调用 abort()

php - 将 2 个关联数组合并为 1 个

java - 将字符串数组转换为 double 组

arrays - "ERROR: LoadError: BoundsError: attempt to access 0-element Array{Candidate,1} at index [1]"尝试填充复合类型的空数组时

java - 在 Java 中保存二进制 STL 文件

模板中不允许使用 C++ 默认参数?