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();
}
# Le bug idiot qui m'a pris la tête pendant 15 jours
Posté par SChauveau . 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: