• # Le bug idiot qui m'a pris la tête pendant 15 jours

    Posté par . En réponse à la dépêche Bogues de logiciel et bogues de management : 737 Max et autres catastrophes. Évalué à 10. Dernière modification le 27 août 2020 à 17:57.

    C'était il y a un peu plus de 20 ans pendant ma thèse où j'écrivais un compilateur en C++ pour un langage de type Matlab. J'ai perdu un temps fou à déterminer pourquoi certains programmes ne donnaient pas des résultats corrects. Après de nombreuses journées à me taper la tête contre les murs, j'ai finalement trouvé le bug qui se trouvait dans un switch-case ressemblant à ceci:

     switch(op) {
     case OPER_ADD:
     a = a+b ;
     break ;
     case OPER_SUB:
     a = a-b ;
     break ;
     case OPER_MULT:
     a = a*b ;
     break ;
     case OPER_DIV: // Right Side Division /
     a = a/b ;
     break ;
     case OPER_LDIV: // Left Side Division \
     a = b/a ;
     break ;
     case OPER_POW: // Power ^ 
     a = pow(a,b) ;
     break ;
     default:
     fatal_error(); 
     }