+ 1
Array Question
What is the output of this code? int arr[3] = {1,3}; cout << arr[2]; Got this question in a challenge. Apparently the correct answer is 0 (instead of error or 3)... I thought that the question was weird... 1) How can there be only be two members in the array when the index within the first square brackets is 3? 2) How do we make sense of printing an index-specified, non-existing value of a non-existing curly brackets-bound member? Is it not impossible to print arr[2] despite that there are only two members within the curly brackets?
2 Answers
+ 2
The answer is 0. The initializer has less elements than the size of the array, in which case the unspecified elements will be set to 0.
Try it in the playground or any compiler if in doubt. Try this:
int arr[10] = { 12, 34 };
and if you print all the elements, you'll see that only the first two have been initialized to 12 and 34, the rest are 0.
+ 1
It's a poorly designed question.
Accessing an array member outside its size will lead to memory leak, returning junk values.
Please report that question so that it can be removed.