struct bit fields questions in c
struct bit fields questions answers
and explanation in c programming language.
(1)
What will be output of c code?
#include<stdio.h>
int main() {
struct employee {
unsigned id: 8;
unsigned sex:1;
unsigned age:7;
}; struct employee emp1={203,1,23};
printf("%d\t%d\t%d",emp1.id,emp1.sex,emp1.age);
return 0;
}
Output: 203 1 23
Explanation:
We can access the data
member of bit field's structure in same way as normal structure.
How bit data or fields in a structure are stored in the memory:
Minimum size of structure
which has at least one bit type member is two byte i.e. 16 bit. This is called
word size of microprocessor. Word size depends on microprocessor. Turbo c is based
on 8086 microprocessor which word size is two byte.
Bits are filled from right
to left direction. In the above question 8 bit is used for id, 1 bit for sex
and 7 bit for age.
(2) What
will be output of c code?
#include<stdio.h>
int main() {
struct bitfield {
unsigned a:5;
unsigned c:5;
unsigned b:6;
}bit;
char *p;
struct bitfield *ptr,bit1={1,3,3};
p=&bit1;
p++;
printf("%d",*p);
return 0;
}
Output: 12
Explanation:
Binary value of 1 is 00001
(in 5 bit)
Binary value of 3 is 00011
(in 5 bit)
Binary value of 3 is 000011
(in 6 bit)
In memory it can be
represented as:
Let's assume memory address
of bit1 is 500 which have assigned to char pointer p. Since char is one byte
data type so p++ will be 501. *p means content of memory address 501 which is
(00001100) and its binary equivalent value is 12. Hence output is 12.
(3)
What will be output of c code?
#include<stdio.h>
int main() {
struct bitfield {
signed int a:3;
unsigned int b:13;
unsigned int c:1;
}; struct bitfield bit1={2,14,1};
printf("%d",sizeof(bit1));
return 0;
}
Output: 4
(4) What will be output of c code?
#include<stdio.h>
int main() {
struct bitfield {
unsigned a:3;
char b;
unsigned c:5;
int d;
}bit;
printf("%d",sizeof(bit));
return 0;
}
Output: 5
Note: (Actual output will be
6 due to slack byte ,So Before executing this program first go to option menu
then compiler then code generation then select word alignment then press OK in
trubo c 3.0)
(5)
What will be output of c code?
#include<stdio.h>
int main() {
struct field {
int a;
char b;
}bit;
struct field bit1={5,'A'};
char *p=&bit1;
*p=45;
printf("\n%d",bit1.a);
return 0;
}
Output: 45
Nesting of structure:
Nesting of structure is
possible i.e. we can declare a structure within another structure but it is
necessary inner structure must declares structure variable otherwise we cannot
access the data member of inner structure. For example:
(6)
What will be output of c code?
#include<stdio.h>
int main() {
struct world {
int a;
char b;
struct india { char
c; float d; }p;
}; struct world st ={1,'A','i',1.8};
printf("%d\t%c\t%c\t%f",st.a,st.b,st.p.c,st.p.d);
return 0;
}
Output: 1 A I 1.800000
Array, union, structure can
be member of a structure (not same structure).
(7)
What will be output of c code?
#include<stdio.h>
int main() {
struct india {
char c;
float d;
};
struct world {
int a[3];
char b;
struct india orissa;
};
struct world st ={{1,2,3},'P','q',1.4};
printf("%d\t%c\t%c\t%f",st.a[1],st.b,st.orissa.c,st.orissa.d);
return 0;
}
Output: 2 p q 1.400000