{C} Macro

phencass
{C} Macro

Bonjour a tous,
Dans un sujet de programmation a l'ecole (Corewar) on nous de demande d'utiliser les macros suivantes :

#define FIRST(A) (((A) & 192) == 128) ? 2 : (((A) & 192) == 64) ? 1 : 4
#define SEC(A) (((A) & 48) == 32) ? 2 : (((A) & 48) == 16) ? 1 : 4
#define LAST(A) (((A) & 12) == 8) ? 2 : (((A) & 12) == 4) ? 1 : 4

#define CHECK_REGISTER(A) (((A) > 16 * 4) ? (0) : (A))
#define CHECK_MEMORY(A) (((A) < 0) ? (MEM_SIZE + ((A) % MEM_SIZE)) : ((A) % MEM\
_SIZE))

Auriez vous une idee de leur utilite Merci d'avance

fredericmazue

Je pense que la première macro (FIRST donc) teste la présence des deux bits de poids le plus fort dans un octet. Si le bit (et seulement lui) le plus fort est positionné, la macro retourne la valeur 2. Si le second bit le plus fort (et seulement lui) est positionné, la macro retourne 1 et si aucun bit de poids fort n'est positionné, ou si les 2 le sont, elle retourne 4.

Voilà comment ça marche. Maintenant l'utilité... fait voir... tester la présence des bits équivaut à tester une plage valeur.

Les autres macros fonctionnent sur le même principe.

phencass

merciii