Première étape du projet, type de retour incorrect?
Number of replies: 2Je suis en train de tester mon code et je suis tombé sur le problème suivant: get_Z() failed on 0x80: got 0x1 instead of 0x80. Or la méthode get_flag a comme valeur de retour “bit_t”, et donc ne devrait retourner que 0 ou 1, et logiquement pas 0x80. Est-ce un problème de type de retour?
Merci de votre aide,
S. Velez de Villa
Re: Première étape du projet, type de retour incorrect?
vous avez raison, il y a une confusion ici : le type de retour de get_flag doit être flag_bit_t et non pas bit_t. D'ailleurs la donnée le dit presque explicitement : « qui retourne la valeur du fanion indiqué par `flag` (voir les valeurs
possibles dans la définition du type `flag_bit_t` dans `alu.h`) ». Désolés pour cette typo.
Je communiquerai ce patch plus officiellement demain (après-midi) avec d'autres éclaircissements complémentaires.
Merci pour la remarque.
Re: Première étape du projet, type de retour incorrect?
A ce sujet (type/valeur de retour de get_flag), je voudrais ajouter un complément de cours sur la sémantique des valeurs de vérité en C :
nous avons vu en cours (cours 1 slide 39) que toute valeur nulle est interprétée (si nécessaire / quand ça fait sens) comme « faux », et que toute valeur non nulle est interprétée comme « vraie ». Il est donc important en C de ne jamais tester la vérité, mais de toujours tester la (non-)fausseté :
on ne fait pas : if (test == 1)
mais on fait : if (test != 0)
Voilà. Juste un complément.