Search code examples
arraysc2d

How can I export answer that I expected?


#include <stdio.h>

int main()
{   
    int tarr[3][4];
    //this for loop is for making 2d array

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 4; j++)
        {
            tarr[i][j] = (i++) * (j++);
        }
    }

    // this for loop is for exporting 2d array
    for (int i = 0; i < 3; i++)
    { 
        for (int j = 0; j < 4; j++)
        {
            printf("%d ", tarr[i][j]);
        }

        printf("\n");
    }

    return 0;
}

expected answer:

1 2 3 4 
2 4 6 8 
3 6 9 12 

actual exported answer:

194 0 -566790131 22024 
-1681794240 0 0 0 
-566790208 22024 -566790672 2 

My expectation was to export as I expected but the weird numbers were exported and I cannot understand where those numbers are from. I want to know where those numbers are from and what should I do for exporting my expected numbers.


Solution

  • Code eventually attempts to access data outside arrays bounds leading to undefined behavior (UB).

    for( int j = 0; j<4; j++) {
        // On the first iteration, i,j is 0,0
        // On the next iteration, i,j is 1,2
        tarr[i][j]= (i++)*(j++);
    }
    

    Do not increment: (i++)*(j++). Instead, simply add 1.

    for( int j = 0; j<4; j++) {
        // On the first iteration, i,j is 0,0
        // On the next iteration, i,j is 0,1
        tarr[i][j]= (i+1) * (j+1);
    }