Previous Next Up Index Contents

3.1.1. Les types entiers

Avant de pouvoir utiliser une variable, nous devons nous intéresser à deux caractéristiques de son type numérique:

(1) le domaine des valeurs admissibles

(2) le nombre d'octets qui est réservé pour une variable

Le tableau suivant résume les caractéristiques des types numériques entiers de C :

définition

description
domaine min
domaine max
nombre d'octets
char
caractère
-128
127
1
short
entier court
-32768
32767
2
int
entier standard
-32768
32767
2
long
entier long
-2147483648
2147483647
4

- char : caractère

Une variable du type char peut contenir une valeur entre -128 et 127 et elle peut subir les mêmes opérations que les variables du type short, int ou long.

- int : entier standard

Sur chaque machine, le type int est le type de base pour les calculs avec les entiers. Le codage des variables du type int est donc dépendant de la machine. Sur les IBM-PC sous MS-DOS, une variable du type int est codée dans deux octets.

- short : entier court

Le type short est en général codé dans 2 octets. Comme une variable int occupe aussi 2 octets sur notre système, le type short devient seulement nécessaire, si on veut utiliser le même programme sur d'autres machines, sur lesquelles le type standard des entiers n'est pas forcément 2 octets.

- Les modificateurs signed/unsigned:

Si on ajoute le préfixe unsigned à la définition d'un type de variables entières, les domaines des variables sont déplacés comme suit:

définition

description
domaine min
domaine max
nombre d'octets
unsigned char
caractère
0
255
1
unsigned short
entier court
0
65535
2
unsigned int
entier standard
0
65535
2
unsigned long
entier long
0
4294967295
4

Remarques

1. Le calcul avec des entiers définis comme unsigned correspond à l'arithmétique modulo 2n. Ainsi, en utilisant une variable X du type unsigned short, nous obtenons le résultat suivant:

Attention!

Affectation :

X = 65500 + 100


Résultat :
X = 64
/* [+216] */

Remarque avancée

2. Par défaut, les types entiers short, int, long sont munis d'un signe. Le type par défaut de char est dépendant du compilateur et peut être signed ou unsigned. Ainsi, l'attribut signed a seulement un sens en liaison avec char et peut forcer la machine à utiliser la représentation des caractères avec signe (qui n'est cependant pas très usuelle).

3. Les valeurs limites des differents types sont indiquées dans le fichier header <limits.h>.

4. (Ajoute de Francois Donato donatofr@dmr.ca) En principe, on peut dire que

          sizeof(short) <= sizeof(int) <= sizeof(long)
Ainsi sur certaine architecture on peut avoir
     short = 2 octets, int = 2 octets, long = 4 octets
et sur d'autre
     short = 2 octets, int = 4 octets, long = 4 octets 

( Il sera intéressant de voir l'implementation dans un environnement 64 bits! )


Previous Next Up Index Contents

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