Première étape du projet, type de retour incorrect?

Première étape du projet, type de retour incorrect?

by Sebastian Velez De Villa -
Number of replies: 2
Bonsoir,

Je 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
In reply to Sebastian Velez De Villa

Re: Première étape du projet, type de retour incorrect?

by Jean-Cédric Chappelier -

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.

In reply to Jean-Cédric Chappelier

Re: Première étape du projet, type de retour incorrect?

by Jean-Cédric Chappelier -

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.