struct st1{
    int a:1; int b:3; int c:6; int d:3;
}s1;
struct st2{
    char a:3;
}s2;
int main(){
    printf("%d : %d",sizeof(s1),sizeof(s2));
    getchar();
}    
I am getting the output as 2 : 1
will you please tell me, how this program works and whats the use of : operator (a:1) here.
Thank you