• [^] # Re: false

    Posté par . En réponse au journal Le core utile. Évalué à 2.

    Dans les autres langages de programmation on également plutôt l’habitude qu’une valeur différente de zéro soit évaluée vraie et zéro soit évalué faux.

    3 cas, en fait.

    1er cas : les pointeurs. Un pointeur nul signale une erreur, sinon c'est un succès.
    2ème cas: les codes d'erreurs. Dans ce cas, 0 est souvent un succès, parce que c'est le code "erreur nulle".
    3ème cas: on retourne pas de codes d'erreur, on les lance à coup d'exception.

    Du coup, en fonction de si la bibliothèque renvoie des pointeurs ( fopen ) ou si elle renvoie des indexes ( open ) on se retrouve avec l'une ou l'autre philosophie. Pour la plupart des fonctions systèmes on à aussi le fameux errno, qui est à 0 quand aucun problème ne s'est produit.
    Enfin, bien sûr ici je parlais du C.
    Au final, on à bien 0 = false. C'est juste que tu ne te poses pas la bonne question. En fait, la question ce n'est pas "foo à t-il fonctionné correctement? (1=vrai, 0=faux)" mais "y'a-t-il eu une erreur lors du fonctionnement de foo? (1=vrai:échec, 0=faux:succès)". Avec le cas des pointeurs qui est une exception, car les pointeurs nuls sont invalides (mais est-ce vraiment imposé par le langage C, ou est-ce juste une convention? J'ai un doute...).

    Dans des langages plus "évolués", on à plus souvent tendance à causer d'exceptions, du coup la valeur de retour ne signale plus les erreurs...