short testarray[4][3] = { {1}, {2,3}, {4,5,6}};
printf("%d", sizeof(testarray));
Assuming a short is two bytes long, what will be printed by the above code?
short testarray[4][3] = { {1}, {2,3}, {4,5,6}};
printf("%d", sizeof(testarray));
A. 6
B. 7
C. 12
D. 24
E. It will not compile because not enough initializers are given
Answer: Option D
Solution (By Examveda Team)
The following table provides the details of standard integer types with their storage sizes and value ranges −
Type | Storage size | Value range |
---|---|---|
char | 1 byte | -128 to 127 or 0 to 255 |
unsigned char | 1 byte | 0 to 255 |
signed char | 1 byte | -128 to 127 |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 |
short | 2 bytes | -32,768 to 32,767 |
unsigned short | 2 bytes | 0 to 65,535 |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
See basically this says that if sort is 2bytes long then what is the output, we can see that the size of the test array is given as [4][3] which simply suggest that total size of the array will be 12 and the short having the storage of 2 bytes that's why it will be 12*2=24
I hope this will be helpful for you!!
thanks abhijeet !
4*3=12
12*2(int type)=24
Not proper explanation
Please Give the explaination
how can that be?
Please explain this..??
how ans d came??
kas kay he as??
How it possible?
We have already defined the array size as 4*3. So, there will be 4*3=12 short nos. stored.
Each short is two bytes long. So, 12short * 2bytes = 24 bytes [size of array]