explications du HardwareSerial::read qui retourne 2 types différents

Salut
J'ai des bases très basiques en C, et je suis tombé sur un truc que je ne comprends pas dans HardwareSerial::read :

int HardwareSerial::read(void)
{
  // if the head isn't ahead of the tail, we don't have any characters
  if (_rx_buffer->head == _rx_buffer->tail) {
    return -1;
  } else {
    unsigned char c = _rx_buffer->buffer[_rx_buffer->tail];
    _rx_buffer->tail = (_rx_buffer->tail + 1) % RX_BUFFER_SIZE;
    return c;
  }
}

Je ne comprends pas comment cette méthode, censée retourner un entier, peut retourner un char.
En plus, l'entier est sur 2 octets et le char sur 1.

A défaut de m'expliquer, si vous pouviez m'envoyer sur une page qui explique cette magie....

Merci !

David.

Cette fonction n'est pas censée retourner un int. Elle retourne un int. D'ailleurs si tu regardes la référence il est bien spécifié que la méthode retourne un int.

Maintenant, lorsqu'on essaye de mettre un int dans une variable de type char seul l'octet de poids faible est copié donc cela fonctionne.

Merci, c'est clair !