ho provato ad utilizzare dei bitfield per implementare una semplice struttura (x vedere come funzionano) ma nessuno dei case e degli if viene rispettato, e nn riesco a capire quindi come funzionino esattamente questi bitfield

posto il codice


codice:
int main(int argc, char *argv[])
{


struct confronti{
       signed int apos :3;
       signed int aneg :3;
       signed int zpos :3;
       signed int zneg :3;
       signed int bpos :3;
       signed int bneg :3;
       signed int abpos :3;
       signed int abneg :3;
       unsigned int male: 1;
       unsigned int femal: 1;         
                }chek;
                
                chek.zpos  = 100;
                chek.zneg  = 000;
                chek.apos  = 101;
                chek.aneg  = 001;
                chek.bpos  = 110;
                chek.bneg  = 010;
                chek.abpos = 111;
                chek.abneg = 011;
                chek.male  = 1;
                chek.femal = 0;
                
                
    //*  il suo sesso (maschio o femmina);
    //* il suo gruppo sanguigno (gruppo A, B, AB o 0, con fattore RH positivo o negativo);
    //* la sua età (entro limiti ragionevoli);
    //* il suo codice di servizio sanitario locale, che è composto da una lettera e 4 cifre decimali. 
struct persona{
      // unsigned int sex : 1;
     signed int sex : 1;
     signed int blood : 3;
      signed short  int age;//esiste un uomo in irlanda che e' morto a  circa 200 anni quindi servono almeno 9 bit 
      char *nome;
      char *cognome;
      
}Sanity[10];

int i;
int n;
char a[3];
for(i=0;i<10;i++){
                  printf("Sesso: 1 Maschio. 0 Femmina ");
                  scanf("%d",n);
                 if (n==1)Sanity[i].sex = chek.male;
                  else Sanity[i].sex = chek.femal;
                  printf("gruppo sanguigno?");
                  scanf("%s",a);
                  switch (a[0]){
                  
                  case 'a' :  {
                       switch(a[1]){
                                   
                              case '+': Sanity[i].blood = chek.apos;break;
                              case '-': Sanity[i].blood = chek.aneg;break;
                              case 'b':{
                                   switch (a[3]){
                                         case '+': Sanity[i].blood = chek.abpos;break;
                                         case '-': Sanity[i].blood = chek.abneg;break;
                              }}}}}
                       if (Sanity[i].sex) printf("Maschio ");
                         else printf("Femmina ");
                       if (Sanity[i].blood == chek.apos)printf("gruppo sanguigno: A+\n");
                       if (Sanity[i].blood == chek.aneg)printf("gruppo sanguigno: A-\n");
                       if (Sanity[i].blood == chek.abpos)printf("gruppo sanguigno: AB+\n");
                       if (Sanity[i].blood == chek.abneg)printf("gruppo sanguigno: AB-\n");                     
}








  system("PAUSE");	
  return 0;
}