Ce ne ET 0xFF faire?

Dans le code suivant:

short = ((byte2 << 8) | (byte1 & 0xFF))

Quel est le but de &0xFF?
Parce que d'autres somestimes je le vois écrit que:

short = ((byte2 << 8) | byte1)

Et qui semble bien fonctionner aussi?

  • Est byte1 de type uint8_t?
  • Oui...
  • Alors je suppose que c'est seulement "juste pour être sûr". Probablement celui qui a écrit qu'il était en train d'être en sécurité, juste au cas où quelqu'un change le type de byte1, ce qui semble tout à fait probable car byte2 est déjà pas 8-bits (sinon byte2 << 8 est 0)
  • Désolé, byte2 << 8 fonctionne même si byte2 est un 8 bits type. Par défaut, les expressions toujours comme int. Le compilateur voit implicitement l'expression comme ((int)byte2) << ((int)8)
  • btw, short est un mot réservé et ne peut pas être utilisé comme nom de variable.
InformationsquelleAutor Muis | 2013-02-05