# Structures, Unions, Enums - C Programming Questions and Answers - RejinpaulPlacement

@ : Home > C Programming > Structures, Unions, Enums

### Find us on Facebook

1.
How will you free the allocated memory ?
Solution:
No answer description available for this question. Let us discuss.
2.
What is the similarity between a structure, union and enumeration?
Answer: (B) All of them let you define new data types
Solution:
No answer description available for this question. Let us discuss.
3.
What will be the output of the program ?

#include
int main()
{
union a
{
int i;
char ch[2];
};
union a u;
u.ch[0]=3;
u.ch[1]=2;
printf("%d, %d, %d\n", u.ch[0], u.ch[1], u.i);
return 0;
}
Answer: (C) 3, 2, 515
Solution:
The system will allocate 2 bytes for the union.
4.
What will be the output of the program ?

#include
int main()
{
union var
{
int a, b;
};
union var v;
v.a=10;
v.b=20;
printf("%d\n", v.a);
return 0;
}
Solution:
No answer description available for this question. Let us discuss.
5.
What will be the output of the program ?

#include
int main()
{
struct value
{
int bit1:1;
int bit3:4;
int bit4:4;
}
bit={1, 2, 13};
printf("%d, %d, %d\n", bit.bit1, bit.bit3, bit.bit4);
return 0;
}
Answer: (C) -1, 2, -3
Solution:
Note the below statement inside the struct:

int bit1:1; --> 'int' indicates that it is a SIGNED integer.

For signed integers the leftmost bit will be taken for +/- sign.

If you store 1 in 1-bit field:

The left most bit is 1, so the system will treat the value as negative number.

The 2's complement method is used by the system to handle the negative values.

Therefore, the data stored is 1. The 2's complement of 1 is also 1 (negative).

Therefore -1 is printed.

If you store 2 in 4-bits field:

Binary 2: 0010 (left most bit is 0, so system will treat it as positive value)

0010 is 2

Therefore 2 is printed.

If you store 13 in 4-bits field:

Binary 13: 1101 (left most bit is 1, so system will treat it as negative value)

Find 2's complement of 1101:

1's complement of 1101 : 0010
2's complement of 1101 : 0011 (Add 1 to the result of 1's complement)

0011 is 3 (but negative value)

Therefore -3 is printed. .