Previous Next Up Index Contents

3.2.1. Les constantes numériques


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.

- Les constantes entières

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
u ou U
unsigned (int ou long)
550u
l ou L
long
123456789L
ul ou UL
unsigned long
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

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 long double.

- Les caractères constants

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.


Exercice 3.3

Complétez le tableau suivant:

base décimale

base octale
base hexadécimale
représ. binaire

01770


8100





0XAAAA




1001001001



1100101011111110
10000




0234



Exercice 3.4

Pour les constantes correctement définies, trouvez les types et les valeurs numériques décimales:


12332

23.4
345lu
34.5L
-1.0

0xeba
0123l
'\n'
1.23ul
-1.0e-1

0FE0
40000
40000u
70000u
1e1f

'0'
o
'\0'
0
'O'

67e0
\r
01001
0.0l
0XEUL


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber