Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

array value at an index for which value hasn't been defined

in this code:

#include <stdio.h>

int main(void) 
{
    int a[2][3] = {{1,2},{4,5,6}};

    printf("%d\n",a[0][2]);
    return 0;
}

The output is 0 – since the array wasn’t initialized, is this output a result of some undefined behaviour?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

From the C Standard (6.7.9 Initialization)

19 The initialization shall occur in initializer list order, each
initializer provided for a particular subobject overriding any
previously listed initializer for the same subobject;151) all
subobjects that are not initialized explicitly shall be initialized
implicitly the same as objects that have static storage duration
.

and

10 If an object that has automatic storage duration is not initialized
explicitly, its value is indeterminate. If an object that has static
or thread storage duration is not initialized explicitly, then:

— if it has arithmetic type, it is initialized to (positive or
unsigned) zero;

So in fact this declaration

int a[2][3] = {{1,2},{4,5,6}};

is equivalent to

int a[2][3] = {{1,2, 0},{4,5,6}};
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading