Hello !
Je me suis mis récemment en tête de compléter le tutoriel sur le C. J’en suis actuellement à la gestion d’erreur (partie 1) et je suis tombé sur un comportement que je n’arrive pas à comprendre et pour lequel mes recherches n’ont pas fourni d’explications.
Le code est celui fourni par le tutoriel pour expliquer l’utilisation de errno
auquel j’ai ajouté #include <math.h>
De ce que je comprends, il est censé ne rien afficher, mais il m’affiche un résultat quoi que je fasse.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <errno.h> #include <math.h> #include <stdio.h> int main(void) { double x; errno = 0; x = pow(-1, 0.5); if (errno == 0) printf("x = %f\n", x); return 0; } |
1 | x = nan |
La commande que j’utilise pour la compilation est zcc -lm test_errno.c; ./a.out
, zcc
étant l’alias de la commande de compilation fournie au début du cours, elle correspond à gcc -Wall -Wextra -pedantic -std=c89 -fno-common -fno-builtin
.
J’ai tenté de produire des erreurs avec d’autres fonctions mathématiques ($log(-1)$ par exemple) mais rien n’a abouti. J’ai testé sur un compilateur en ligne et cette fois ci, le code a fonctionné comme prévu.
Avez-vous la moindre idée de pourquoi j’ai ce problème et comment puis-je le résoudre ?
Merci d’avance !