ciao a tutti...qualche anima pia potrebbe farmi capire per quale motivo mi stampa tutte le date per bene tranne il bisestile...grazie mille per la risposta

codice:
#include <stdio.h>

int main()
{
    int gg, mm, aaaa;
    char *mese[12] = {"Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"};
    int bis=((aaaa % 4 == 0 && aaaa % 100 != 0) || aaaa % 400 == 0);

    printf("Inserire una data: ");
    scanf("%d/%d/%d", &gg, &mm, &aaaa);    
                                  
    while(1){ 
             if((mm==2 && gg>28) || (mm==4,6,9,11 && gg>30) || (mm==1,3,5,7,8,10,12 && gg>31) || (mm==2 && gg==29 && aaaa!=bis)){
             printf("Data errata!!!\nInserire nuova data:");
                  scanf("%d/%d/%d", &gg, &mm, &aaaa);
             
             }
             else{       
                  printf("%d %s %d", gg, mese[mm-1], aaaa);
                  break;                                   
             }                 
       }           
 return 0;
}