Here is the code i try to run:
void main(){
    int arr[2][3]={0};
    arr[1][2] = 2;
    printf("%d", arr[1, 2]);
}
It gives me the output as 2. What the hell is going on here. I couldn't find an answer on google so i posted it here.
Here is the code i try to run:
void main(){
    int arr[2][3]={0};
    arr[1][2] = 2;
    printf("%d", arr[1, 2]);
}
It gives me the output as 2. What the hell is going on here. I couldn't find an answer on google so i posted it here.
 
    
    array is not out of bound
Correct.
The program has undefined behavior for another reason.
I assume you are confused about this part: arr[1, 2]
The 1,2 is comma seperated expressions, i.e. 1 and 2. The rule of the comma operator is that the result is the result of of the right operand. So 1,2 ends  up being 2. Therefore your code is equivalent to:
int arr[2][3]={0};
arr[1][2] = 2;
printf("%d", arr[2]);
This code has undefined behavior due to the printf statement. You are using %d which means that the argument type must be int. However, arr[2] is a pointer. So there is a mismatch between the format specifier and the argument provided. That is undefined behavior.
The correct way to print the pointer is:
printf("%p", (void*)arr[2]);
It gives me the output as 2.
Due to undefined behavior anything may happen.
