2D Array storing wrong values?

Hi, I am storing 4x4 temperature data in a 2D array, however when I try to call the array to print values after storing the data, the values at row 0,1,2 of column 3 are incorrect.

I created a C++ MRE below of the issue:

#include <iostream>

using namespace std;

int frameBuff[35] = { 16,1,248,0,8,1,40,1,254,0,247,0,9,1,68,1,23,1,254,0,52,1,76,1,72,1,30,1,10,1,70,1,69,1,216 };

double tempArr[3][3];

int main()
{
    int y =0;
    int x =0;
    int i =0;
    double val =0;
    //store in array
    for (int y=0; y<4; y++){
        cout<<"\n";
        for (int x=0; x<4; x++){
            i = x + (y * 4);
            val = frameBuff[(i * 2 + 2)] + (frameBuff[(i * 2 + 3)] << 8);
            tempArr[y][ ] = val * 0.1;
            cout<<tempArr[y][x];
            cout<<" | ";
        }
    }
    
    //confirm values - the output of this for loop has the issue
    cout<<"\n";
    for (int y=0; y<4; y++){
        cout<<"\n";
        for (int x=0; x<4; x++){
            cout<<tempArr[y][x];
            cout<<" | ";
        }
    }

    return 0;
}

With [3][3] you are not creating a 4x4 but a 3x3 array - the number in square brackets stands for the number of elements not the maximum index of elements (that would be a very confusing way of allocating an array).

Hi,
code which you provided can’t be compiled because
this:

 tempArr[y][ ] = val * 0.1; 

but when I change this to:

 tempArr[y][x] = val * 0.1;

and then changed

double tempArr[3][3];

to

double tempArr[4][4];

all works fine