Bases syntaxiques du langage C
Avant d'écrire un programme C, il est essentiel de connaître les éléments fondamentaux qui constituent le langage : l'alphabet accepté, les mots réservés par le compilateur et les règles de nommage des identifiants.
1. Jeu de caractères
a. Alphabets
C accepte les 26 lettres majuscules (A à Z) et les 26 lettres minuscules (a à z) comme composantes des identifiants, des mots-clés et des chaînes de caractères. C est un langage sensible à la casse : Salaire et salaire sont deux identifiants distincts.
b. Chiffres
Les dix chiffres décimaux 0 à 9 sont valides dans les identifiants (sauf en première position) et dans les constantes numériques.
c. Caractères spéciaux
| Caractère | Nom usuel | Usage en C |
|---|---|---|
; | Point-virgule | Fin d'instruction |
{ } | Accolades | Délimiteur de bloc |
( ) | Parenthèses | Appel de fonction, condition |
[ ] | Crochets | Accès aux tableaux |
# | Dièse | Directive préprocesseur |
* | Astérisque | Multiplication, pointeur |
& | Esperluette | Adresse mémoire, ET binaire |
_ | Soulignement | Valide dans les identifiants |
\ | Antislash | Séquence d'échappement |
" ' | Guillemets / Apostrophe | Délimiteur de chaînes et caractères |
d. Espaces blancs
Les caractères d'espacement sont ignorés par le compilateur (sauf dans les chaînes de caractères). Ils servent uniquement à améliorer la lisibilité du code.
| Caractère | Séquence d'échappement | Description |
|---|---|---|
| Espace | ' ' | Espace simple |
| Nouvelle ligne | '\n' | Passage à la ligne suivante |
| Tabulation horizontale | '\t' | Alignement par tabulation |
| Retour chariot | '\r' | Retour en début de ligne |
2. Mots-clés
La norme ANSI C définit 32 mots-clés :
| Mot-clé | Mot-clé | Mot-clé | Mot-clé |
|---|---|---|---|
auto | double | int | struct |
break | else | long | switch |
case | enum | register | typedef |
char | extern | return | union |
const | float | short | unsigned |
continue | for | signed | void |
default | goto | sizeof | volatile |
do | if | static | while |
Chaque mot-clé appartient à l'une des catégories suivantes :
| Catégorie | Mots-clés |
|---|---|
| Types de données | int char float double long short signed unsigned void |
| Contrôle de flux | if else switch case default for while do break continue return goto |
| Types composites | struct union enum typedef |
| Classes de stockage | auto register static extern |
| Qualificateurs | const volatile |
| Opérateur | sizeof |
int int = 5; /* erreur — "int" est un mot-clé */
float return = 2; /* erreur — "return" est un mot-clé */
/* Correct */
int entier = 5;
float valRetour = 2;3. Identifiants
Exemple n°1 — Identifiants valides et invalides
/* Identifiants valides */
float salaire;
int Age;
int _compteur;
double valeur_max;
int tab2D;
char nom50;
/* Identifiants invalides */
int 2eme; /* commence par un chiffre */
float ma valeur; /* contient un espace */
int int; /* mot-clé réservé */
char mon-nom; /* tiret non autorisé */Règles de nommage
| # | Règle | Valide | Invalide |
|---|---|---|---|
| 1 | Caractères autorisés : lettres, chiffres, _ | val_max | val-max |
| 2 | Le premier caractère doit être une lettre ou _ | _val, val1 | 1val |
| 3 | Pas de mot-clé comme identifiant | monInt | int |
| 4 | Sensible à la casse | Age ≠ age | — |
| 5 | Longueur recommandée ≤ 31 caractères | compteur_boucle | Identifiant de 64+ chars (certains compilateurs) |
Apple), le compilateur l'identifie immédiatement comme identifiant dès le premier caractère. Si un identifiant commençait par un chiffre (ex. 123apple), le compilateur croirait lire un nombre puis devrait faire un retour en arrière (backtracking) en réalisant que ce n'est pas un nombre valide — mécanisme non supporté en analyse lexicale standard.Conventions de nommage recommandées
| Convention | Exemple | Usage habituel |
|---|---|---|
| snake_case | valeur_max, nb_elements | Variables et fonctions (style C standard) |
| MAJUSCULES | MAX_TAILLE, PI | Constantes #define |
| camelCase | monTableau, nbEtudiants | Variables (style alternatif) |
Préfixe _ | _interne | Réservé aux implémentations système — à éviter |
/* Peu lisible */
int x, y, z;
float t;
/* Expressif */
int nb_etudiants, note_min, note_max;
float moyenne_classe;Récapitulatif
| Élément | Description | Exemple valide | Exemple invalide |
|---|---|---|---|
| Alphabet | A–Z, a–z (sensible à la casse) | Valeur ≠ valeur | Lettres accentuées (é, à…) |
| Chiffres | 0–9 (pas en 1ère position) | val1 | 1val |
| Caractère spécial | Seul _ autorisé dans les identifiants | val_max | val-max |
| Mot-clé | 32 mots réservés, tous en minuscule | int, while | Utilisé comme nom de variable |
| Identifiant | Nom défini par le programmeur | nb_eleves | 2eleves, int |
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.