Les types de données:
Quand on crée une variable, il faut que le compilateur sache la taille mémoire nécessaire pour stocker le contenu de cette variable et comment les données seront traitées lors des opérations arithmétiques ou logiques.
Il y a quatre types de données fondamentaux:
| Types | Description | Taille (en bits) |
| char | Simple caractère | 8 |
| int | Entier | 16 |
| float | Nombre à virgule flottante simple précision | 32 |
| double | Nombre à virgule flottante double précision | 32 |
La taille de ces types n’est pas standard. Par exemple pour le type int la taille dépend de la largeur de l’unité arithmétique et logique (ALU) du microcontrôleur utilisé ; 16 bits pour un microcontrôleur 16 bits; 32 bits pour un microcontrôleur 32 bits. A contrario pour le compilateur XC8 destiné aux microcontrôleurs 8 bits, le type int est définit sur 16 bits soit 2 x 8 bits.
Il y a aussi deux autres types de données : le type void et le type enum que nous verront par la suite.
Les quatre types de données fondamentaux précédents peuvent être modifiés en ajoutant des qualificatifs sous forme de préfixes comme : signed, unsigned, short et long.
Le tableau ci-après donne un aperçu dans le cas du type int:
| Type qualifié | Valeur mini | Valeur maxi | Taille (en bits) |
| unsigned char | 0 | 255 | 8 |
| char, signed char | -127 | 127 | 8 |
| unsigned short int | 0 | 65535 | 16 |
| short int, signed int | -32768 | 32767 | 16 |
| unsigned int | 0 | 65535 | 16 |
| int, signed int | -32768 | 32767 | 16 |
| unsigned long int | 0 | 232 - 1 | 32 |
| long int, signed long int | -231 | 231 - 1 | 32 |
| unsigned long long int | 0 | 264 - 1 | 64 |
| Long long int, signed long long int | -263 | 263 - 1 | 64 |
Le terme int employé ici dans certain cas est optionnel. Par exemple unsigned int peut être remplacé par unsigned, lors d’une déclaration. Toutes ces options sont repérées par la couleur bleu dans le tableau.
Les types float et double peuvent être représentés en virgule flottante. Voir tableau ci-après:
| Type qualifié | Minimum absolu | Maximum absolu | Taille(en bits) |
| float | ±1044, 85 | ±1038, 53 | 32 |
| double | ±1044, 85 | ±1038, 53 | 32 |
| long double | ±10323, 3 | ±10308, 3 | 64 |
La majorité des compilateurs adopte ce mode de représentation des données.