Ligne de C inconnue :o

Remi coudene -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour a tous
Je travaille actuellement sur un projet électronique, avec un petit bout de programmation en C (le pic programmé en C ) et j avoue qu une ligne me laisse perplexe (je suis assez novice en C je dois avouer :/ )
la voici :
#define bitset(var,bitno) ((var)|=1<<(bitno))
(et a peu pres la meme
#define bitclr(var,bitno) ((var)&=~(1<<(bitno)))
)

ce que je crois comprendre :
cela définit une variable bitset, composé d une variable, et d un "bitno" (bit number peut etre :o ), mais alors le petit bout qui suit, j avoue je suis perdu , je connais le symbole du Ou inclusif logique |=, et le << qui est un décalage vers la gauche, mais le tout ensemble.... :((

J espère que vous pourrez m éclairer
merci d avance

Rémi Coudène
A voir également:

3 réponses

jisisv Messages postés 3678 Statut Modérateur 935
 
Ce sont deux macros qui permettent de placer le bit numéro bitno à
0 ou 1 respectivement.
L'opérateur shift << possède une plus grande priorité que le ou (|) bitwise.
Tu peux réécrire les macros
#define bitset(var,bitno) ((var)|= (1<<(bitno)))
#define bitclr(var,bitno) ((var)&= (~(1<<(bitno))))

Johan
The�software�said�"Requires�Windows98,�Win2000,�or�better,
So�I�installed�Unix.
0
brj
 
((var)|=1<<(bitno))
c'est un var=var | ( 1<<(bitno) )
0
jisisv Messages postés 3678 Statut Modérateur 935
 
Mea culpa,
... mettre le bit bitno à 1 ou 0 respectivement.

Johan
The�software�said�"Requires�Windows98,�Win2000,�or�better,
So�I�installed�Unix.
0