next up previous contents index
suivant: Caractères monter: main précédent: Durée de vie et   Table des matières   Index


Types entiers

Contrairement à d'autres langages comme CAML ou Maple, C++ n'opère pas sur des entiers de taille quelconque, mais sur l'un de ses types entiers, qui sont de taille fixe : short int, int, long int, le plus courant étant int, qui est codé sur 4 octets, c'est-à-dire 32 bits, sur les machines usuelles (Sparc, Alpha, Pentium). Ce sont des types d'entiers signés (c'est-à-dire positifs ou négatifs) ; il leur correspond des types d'entiers non-signés (c'est-à-dire positifs), unsigned short int, unsigned int et unsigned long int.

Quand un type entier est codé sur $N$ bits, $2^N$ entiers peuvent être représentés. Pour des types non-signés, on peut ainsi représenter l'intervalle $[0, 2^N-1]$ ; pour $N=32$ la suite de bits $b_{31}\ldots
b_{0}$ représente l'entier $b_{31}2^{31} +\ldots + 2^1 b_{1} + b_{0}$. Pour des types signés, les entiers dans l'intervalle $[-2^{N-1},
2^{N-1}-1]$ sont représentables ; les entiers $\ge 0$ sont représentés de la même façon que dans le cas non-signé et l'on a $b_{N-1} = 0$ ; les entiers $<0$ sont représentés en complément à deux (en général) et l'on a $b_{N-1} = 1$; pour $N=32$, cela signifie que $b_{31}\ldots
b_{0}$ représente l'entier $-b_{31}2^{31} + b_{30}2^{30} +\ldots + 2^1
b_{1} + b_{0}$. Quand $N=32$, le plus grand entier signé représenté est de l'ordre de $2 \times 10^9$. Il est inutile de connaître ces valeurs numériques, mais il faut savoir que les entiers représentés par le type int forment l'intervalle $[$INT_MIN, INT_MAX$]$, ces deux constantes étant définies dans climits. Il y a des constantes analogues pour les autres types entiers.

Les opérations sont réalisées modulo $2^N$, et aucun test de débordement n'est fait à l'exécution. Il ne faut pas s'étonner de voir des résultats négatifs en cas de débordement ; par exemple l'évaluation de INT_MAX + 1 donnera la valeur de INT_MIN.

La notation décimale peut être utilisée pour noter les valeurs entières :


  int a = 144;

Un entier peut être lu sur l'entrée standard (le clavier) cin au moyen de l'opérateur >>, et écrit sur la sortie standard (l'écran) cout au moyen de l'opérateur << :


  int n;
  cin >> n;
  cout << n;


next up previous contents index
suivant: Caractères monter: main précédent: Durée de vie et   Table des matières   Index
R Lalement