Manuel de référence
Les commentaires
Les caractères /* marquent le début d'un commentaire, qui se termine par les caractères */. Les commentaires ne s'imbriquent pas, et ne figurent pas à l'intérieur de constantes de type chaîne ou caractère.
La mise en commentaire d'une seule ligne peut aussi se faire à l'aide des caractères // positionnés en début de ligne.
Les identificateurs
Un identificateur est une séquence de lettres et de chiffres. Le premier caractère doit être une lettre ; le caractère de soulignement _ compte comme une lettre. Les lettres majuscules et minuscules sont différenciées. Les identificateurs peuvent être de longueur quelconque, et les identificateurs internes peuvent comporter au moins 31 caractères significatifs ; sur certaines implémentations, le nombre de caractères significatifs peut-être plus grand.
Les identificateurs internes sont les noms de macros du préprocesseur et tous les autres noms n'ayant pas de lien externe. Les identificateurs ayant un lien externe obéissent à des contraintes plus fortes : les implémentations ont le droit de réduire le nombre de caractères significatifs à six, et de ne pas distinguer les majuscules des minuscules.
Les mots-clés
Les identificateurs suivants sont réservés pour servir de mots-clés ; il ne peuvent servir à rien d'autre :
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 |
Certains implémentations réservent aussi les mots fortran et asm.
Les constantes
Il exite différentes sortes de constantes, chacune ayant un type particulier.
Les constantes entières
On considère qu'une constante entière, composée d'une séquence de chiffres, est écrit en octal si elle commence par un 0 (le chiffre zéro), sinon en décimal. Les constantes octales ne peuvent pas contenir les chiffres 8 et 9. Une séquence de chiffres précédée de 0x ou 0X (avec le chiffre zéro) est considérée comme un entier hexédécimal. Les chiffres hexadécimaux vont de a ou A à f ou F, et valent respectivement 10 à 15.
On peut ajouter à une constante entière le suffixe u ou U, pour indiquer qu'elle est non signée (unsigned). On peut également ajouter le suffixe l ou L pour indiquer qu'elle est de type long.
Le type d'une constante entière dépend de sa forme, de sa valeur et de son suffixe :
- Si elle est décimale et ne comporte pas de suffixe, son type est le premier des types suivants dans laquelle elle peut être représentée : int, long int, unsigned long int.
- Si elle est octale ou hexadécimale et ne comporte pas de suffixe, son type est le premier des types suivants dans laquelle elle peut être représentée : int, unsigned int, long int, unsigned long int.
- Si elle comporte le suffixe u ou U, son type est unsigned int ou unsigned long int.
- Si elle comporte le suffixe l ou L, son type est long int ou unsigned long int.
Les constantes de type caractère
Une constante de type caractère est une séquence de un ou plusieurs caractères placés entre apostrophes, comme 'x'. La valeur d'une constante de type caractère ne comportant qu'un caractère est la valeur numérique de ce caractère dans le jeu de caractère de la machine d'exécution. La valeur d'une constante à plusieurs caractère dépend de l'implémentation.
Les constantes de type caractère ne peuvent pas contenir le caractère ' (apostrophe) ni les caractères de fin de ligne ; pour les représenter, ainsi que certains caractères, on peut employer les séquences d'échappement suivantes :
fin de ligne | newline | NL (LF) | \n |
tabulation horizontale | horizontal tab | HT | \t |
tabulation verticale | vertical tab | VT | \v |
retour en arrière | backspace | BS | \b |
retour chariot | carriage return | CR | \r |
saut de page | formfeed | FF | \f |
signal sonore | audible alert | BEL | \a |
barre oblique inverse | backslash | \ | \\ |
point d'interrogation | question mark | ? | \? |
apostrophe | single quote | ' | \' |
guillemet | double quote | " | \" |
nombre octal | octal number | ooo | \ooo |
nombre hexadécimal | hexadecimal number | hh | \xhh |
La séquence d'échachappement \ooo se compose d'une barre oblique inverse suivie de 1, 2 ou 3 chiffres octaux, qui servent à indiquer la valeur du caractère désiré. Un exemple courant de cette construction est \0 (non suivi d'un chiffre), qui représente le caracère NUL.
La séquence d'échappement \xhh se compose d'une barre obliquer inverse suivie d'une x, puis de chiffres hexadécimaux, qui servent à indiquer la valeur du caractère désiré. Le nombres de chiffres n'est pas limité, mais le résultat est indéfini si la valeur donnée est supérieure à celle du plus grand caractère.
Pour les séquences d'échappement en octal ou hexadécimal, si le type est char de l'implémentation est signé la valeur subit une extension de signe comme dans le cas d'une conversion dans le type char. Si le caractère qui suit le \ n'est pas l'un de ceux énumérés ci-dessus, le résultat est indédfini.
Certaines implémentations comportent un jeu de caractères étendu que l'on ne peut pas représenter dans le type char. Une constante de ce jeu étendu s'écrit avec le préfixe L, par exemple L'x', et s'appelle une constante de type caractère étendu (wide character constant). Une telle constante est de type wchar_t, un type entier défini dans le fichier d'en-tête standard <stddef.h>. Comme pour les constantes de type caractère ordinaires, on peut se servir de séquences d'échappement octales ou hexadécimales ; le résultat est indéfini si la valeur donnée n'est pas représentable dans le type wchar_t.
Remarque : Les jeux de caractères couramment utilisés dans les deux Amériques et en Europe de l'Ouest peuvent tenir dans le type char par un codage convenable ; le type wchar_t est utilisé en général pour traiter les caractères des langues asiatiques.