Mots-clés et identificateurs en C

28 Aug 2019 28 Aug 2019 11666 vues ESSADDOUKI Mostafa 5 min de lecture

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

Définition — Jeu de caractères Le jeu de caractères d'un langage est l'ensemble des symboles valides pouvant apparaître dans le code source. En C, il comprend les alphabets, les chiffres, les caractères spéciaux et les espaces blancs.

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èreNom usuelUsage en C
;Point-virguleFin d'instruction
{ }AccoladesDélimiteur de bloc
( )ParenthèsesAppel de fonction, condition
[ ]CrochetsAccès aux tableaux
#DièseDirective préprocesseur
*AstérisqueMultiplication, pointeur
&EsperluetteAdresse mémoire, ET binaire
_SoulignementValide dans les identifiants
\AntislashSéquence d'échappement
" 'Guillemets / ApostropheDé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èreSéquence d'échappementDescription
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

Définition — Mot-clé Un mot-clé est un mot réservé par le compilateur avec une signification syntaxique précise. Il ne peut pas être utilisé comme identifiant (nom de variable, de fonction, etc.). En C, tous les mots-clés sont en minuscules.

La norme ANSI C définit 32 mots-clés :

Mot-cléMot-cléMot-cléMot-clé
autodoubleintstruct
breakelselongswitch
caseenumregistertypedef
charexternreturnunion
constfloatshortunsigned
continueforsignedvoid
defaultgotosizeofvolatile
doifstaticwhile

Chaque mot-clé appartient à l'une des catégories suivantes :

CatégorieMots-clés
Types de donnéesint char float double long short signed unsigned void
Contrôle de fluxif else switch case default for while do break continue return goto
Types compositesstruct union enum typedef
Classes de stockageauto register static extern
Qualificateursconst volatile
Opérateursizeof
Danger — Utiliser un mot-clé comme identifiantNommer une variable avec un mot-clé provoque une erreur de compilation :
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

Définition — Identifiant Un identifiant est le nom donné par le programmeur à une entité du programme : variable, fonction, structure, type, étiquette, etc. Il doit être unique dans sa portée et ne pas coïncider avec un mot-clé.

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ègleValideInvalide
1Caractères autorisés : lettres, chiffres, _val_maxval-max
2Le premier caractère doit être une lettre ou __val, val11val
3Pas de mot-clé comme identifiantmonIntint
4Sensible à la casseAgeage
5Longueur recommandée ≤ 31 caractèrescompteur_boucleIdentifiant de 64+ chars (certains compilateurs)
Pourquoi un identifiant ne peut pas commencer par un chiffre ? Le compilateur traite le code source en plusieurs phases. Lors de l'analyse lexicale, il doit décider instantanément si un jeton est un nombre ou un identifiant. Si un identifiant commence par une lettre (ex. 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

ConventionExempleUsage habituel
snake_casevaleur_max, nb_elementsVariables et fonctions (style C standard)
MAJUSCULESMAX_TAILLE, PIConstantes #define
camelCasemonTableau, nbEtudiantsVariables (style alternatif)
Préfixe __interneRéservé aux implémentations système — à éviter
Astuce — Choisir des noms expressifsUn bon identifiant décrit clairement le rôle de l'entité. Préférer des noms signifiants plutôt que des lettres isolées, sauf pour les indices de boucles classiques :
/* Peu lisible */
int x, y, z;
float t;

/* Expressif */
int nb_etudiants, note_min, note_max;
float moyenne_classe;

Récapitulatif

ÉlémentDescriptionExemple valideExemple invalide
AlphabetA–Z, a–z (sensible à la casse)ValeurvaleurLettres accentuées (é, à…)
Chiffres0–9 (pas en 1ère position)val11val
Caractère spécialSeul _ autorisé dans les identifiantsval_maxval-max
Mot-clé32 mots réservés, tous en minusculeint, whileUtilisé comme nom de variable
IdentifiantNom défini par le programmeurnb_eleves2eleves, int

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.