En pratique, nous utilisons souvent des valeurs constantes pour calculer, pour initialiser des variables, pour les comparer aux variables, etc. Dans ces cas, l'ordinateur doit attribuer un type numérique aux valeurs constantes. Pour pouvoir prévoir le résultat et le type exact des calculs, il est important pour le programmeur de connaître les règles selon lesquelles l'ordinateur choisit les types pour les constantes.
Type automatique
Lors de l'attribution d'un type à une constante entière, C choisit en général la solution la plus économique:
Le type des constantes entières * Si possible, les constantes entières obtiennent le type int.
* Si le nombre est trop grand pour int (p.ex: -40000 ou +40000) il aura automatiquement le type long.
* Si le nombre est trop grand pour long, il aura le type unsigned long.
* Si le nombre est trop grand pour unsigned long, la réaction du programme est imprévisible.
Type forcé
Si nous voulons forcer l'ordinateur à utiliser un type de notre choix, nous pouvons employer les suffixes suivants:
suffixe |
type |
Exemple |
uou U |
unsigned (int ou long) |
550u |
l ou L |
long |
123456789L |
ul ou UL |
unsignedlong |
12092UL |
Exemples
12345 |
type int |
||
52000 |
type long |
||
-2 |
type int |
||
0 |
type int |
||
1u |
type unsigned int |
||
52000u |
type unsigned long |
||
22lu |
Erreur ! |
Base octale et hexadécimale
Il est possible de déclarer des constantes entières en utilisant la base octale ou hexadécimale:
* Si une constante entière commence par 0 (zéro), alors elle est interprétée en base octale.
* Si une constante entière commence par 0x ou 0X , alors elle est interprétée en base hexadécimale.
Exemples
base décimale |
base octale |
base hexadécimale |
représ. binaire |
100 |
0144 |
0X64 |
1100100 |
255 |
0377 |
0xff |
11111111 |
65536 |
0200000 |
0X10000 |
10000000000000000 |
12 |
014 |
0XC |
1100 |
4040 |
07710 |
0xFC8 |
111111001000 |
Les constantes rationnelles peuvent être indiquées:
* en notation décimale, c.-à-d. à l'aide d'un point décimal: Exemples
123.4 -0.001 1.0
* en notation exponentielle, c.-à-d. à l'aide d'un exposant séparé du nombre décimal par les caractères 'e' ou 'E': Exemples
1234e-1 -1E-3 0.01E2
L'ordinateur reconnaît les constantes rationnelles au point décimal ou au séparateur de l'exposant ('e' ou 'E'). Par défaut, les constantes rationnelles sont du type double. Le type des constantes rationnelles * Sans suffixe, les constantes rationnelles sont du type double.
* Le suffixe f ou F force l'utilisation du type float.
* Le suffixe l ou L force l'utilisation du type longdouble.
Les constantes qui désignent un (seul) caractère sont toujours indiquées entre des apostrophes: par exemple 'x'. La valeur d'un caractère constant est le code interne de ce caractère. Ce code (ici: le code ASCII) est dépendant de la machine.
Les caractères constants peuvent apparaître dans des opérations arithmétiques ou logiques, mais en général ils sont utilisés pour être comparés à des variables.
Séquences d'échappement
Comme nous l'avons vu au chapitre 2, l'impression et l'affichage de texte peut être contrôlé à l'aide de séquences d'échappement. Une séquence d'échappement est un couple de symboles dont le premier est le signe d'échappement '\'. Au moment de la compilation, chaque séquence d'échappement est traduite en un caractère de contrôle dans le code de la machine. Comme les séquences d'échappement sont identiques sur toutes les machines, elles nous permettent d'écrire des programmes portables, c.-à-d.: des programmes qui ont le même effet sur toutes les machines, indépendemment du code de caractères utilisé.
Séquences d'échappement
\a |
sonnerie |
\\ |
trait oblique |
\b |
curseur arrière |
\? |
point d'interrogation |
\t |
tabulation |
\' |
apostrophe |
\n |
nouvelle ligne |
\" |
guillemets |
\r |
retour au début de ligne |
\f |
saut de page (imprimante) |
\0 |
NUL |
\v |
tabulateur vertical |
Le caractère NUL
La constante '\0' qui a la valeur numérique zéro (ne pas à confondre avec le caractère '0' !!) a une signification spéciale dans le traitement et la mémorisation des chaînes de caractères: En C le caractère '\0' définit la fin d'une chaîne de caractères.