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

3 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    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
  2. brj
     
    ((var)|=1<<(bitno))
    c'est un var=var | ( 1<<(bitno) )
    0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Mea culpa,
    ... mettre le bit bitno à 1 ou 0 respectivement.

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