next up previous contents index
Next: Caractères Up: No Title Previous: Durée de vie et

Types entiers

     

Contrairement à d'autres langages comme ML 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), dits unsigned .

Quand un type entier est codé sur N bits, tex2html_wrap_inline5336 entiers peuvent être représentés. Pour des types non-signés, on peut ainsi représenter l'intervalle tex2html_wrap_inline5338 ; pour N=32 la suite de bits tex2html_wrap_inline5342 représente l'entier tex2html_wrap_inline5344 .

Pour des types signés, les entiers dans l'intervalle tex2html_wrap_inline5346 sont représentables ; les entiers tex2html_wrap_inline5348 sont représentés de la même façon que dans le cas non-signé et l'on a tex2html_wrap_inline5350 ; les entiers <0 sont représentés en complément à deux et l'on a tex2html_wrap_inline5354 ; pour N = 32, cela signifie que tex2html_wrap_inline5342 représente l'entier tex2html_wrap_inline5360 . Quand N=32, le plus grand entier signé représenté est de l'ordre de tex2html_wrap_inline5364 .

Il est inutile de connaître cette valeur ; 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 limits.h. Il y a des constantes analogues pour les autres types entiers.

Les opérations sont réalisées modulo tex2html_wrap_inline5336 , et aucun test de débordement n'est fait à l'exécution. Il ne faut donc 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) au moyen de la fonction scanf, et écrit sur la sortie standard (l'écran) avec printf en utilisant la conversion %d :    

  int n;
  scanf("%d", &n);
  printf("%d", n);

On remarquera bien la différence entre le &n de scanf et le n de printf.


next up previous contents index
Next: Caractères Up: No Title Previous: Durée de vie et

Rene Lalement
Mon Sep 30 18:22:54 MET 1996