byte est un alias de uint8_t défini par Arduino (ça se fait dans Arduino.h) tout comme boolean est un alias de bool
typedef bool boolean;
typedef uint8_t byte;
le type word
est aussi défini dans Arduino.h comme
typedef unsigned int word;
Les types font partie du langage, il y a ceux de bases (types fondamentaux) dont la longueur dépend de l'architecture et de quelques règles bien définies et depuis C++11 on a aussi des tailles fixes en octets.
pour const, sur un type simple comme un int, ce n'est pas important où vous le placez
Si vous commencez à avoir des pointeurs c'est une autre histoire, il faut lire de droite à gauche:
si vous dites
const int * maVariable;
alors maVariable
est un pointeur (*
) vers un entier (int
) qui est constant (const
). Le pointeur pourra être modifié, mais pas l'entier pointé
si vous dites
int const * maVariable;
alors maVariable
est un pointeur (*
) qui est constant (const
) vers un entier (int
).
ou encore si vous dites
int * const maVariable;
alors maVariable
est un constant (const
) pointeur (*
) vers un entier (int
).
les deux sont identiques, Le pointeur ne pourra pas être changé mais l'entier pointé peut varier
enfin si vous dites
const int const * maVariable;
alors maVariable
est un pointeur (*
) qui est constant (const
) vers un entier (int
) qui lui aussi est constant (const
). Dans ce cas, ni le pointeur, ni la valeur pointée ne peuvent être modifiés.
subtil, non ? 
quand on l'utilise dans les fonctions dans des objets et que l'on met const
APRES le nom de la fonction, ça veut dire que cette fonction n'altère pas l'intégrité de l'objet, la mémoire le représentant ne change pas avant et après l'appel.
On dira qu'une fonction membre const
ne peut pas modifier la valeur d'une variable membre de la classe et ne peut appeler aucune autre fonction membre qui ne serait pas constante.
Si vous essayez de compiler cela:
class uneClasse
{
public:
int valeur;
void maFonction() const
{
valeur = 100; // erreur de compilation, on essaye de modifier l'objet
}
};
void setup() {}
void loop() {}
vous aurez une erreur à la compilation
[color=orange][b].../sketch_feb08c.ino: In member function 'void uneClasse::maFonction() const':
sketch_feb08c:8:16: error: assignment of member 'uneClasse::valeur' in read-only object
valeur = 100; // erreur de compilation, on essaye de modifier l'objet
^~~
exit status 1
assignment of member 'uneClasse::valeur' in read-only object[/b][/color]