ANNEXE : Types numériques du langage C


1. Liste des types et tailles en mémoire
(testées sur Linux Ubuntu 64b 14.4 LTS))
 
taille(0) entiers relatifs(1) entiers naturels(1) réels
1 B (8 b) char unsigned char  
2 B (16 b) short int unsigned short int  
4 B (32b) int(2) unsigned int float(3a)
8 B (64b) long(2) unsigned long(2) double(3b)
16 B (128b)   long long(2)(4)   unsigned long long(2)(4)   long double(5)

Légende :
(0) La fonction sizeof(nomdutype) donne la taille mémoire en octet d'un type.
(1) Les entiers relatifs sont codés en complément à 2 (complément arithmétique). Pour les entiers naturels, on préfixe le type entier relatif avec unsigned. Le type char est théoriquement un type caractère, mais il peut se gérer comme un entier.
(2) Le standard C prévoit au moins : 2 B pour int, 4 B pour long (=long int) et 8 B pour long long (=long long int). Ces tailles peuvent varier selon les systèmes.
(3) Conforme au standard IEEE :
  (3a) Simple précision sur 4 octets, exposant 8 bit et mantisse avec bit implicite.
  (3b) Double précision sur 8 octets, exposant 11 bit et mantisse avec bit implicite.
(4) A partir du C99.
(5) Pas forcément conforme au standard IEEE, qui prévoit pour la précision étendue : au moins 79 ou 80 bits (bit de signe / exposant 15 bit / mantisse SANS bit implicite).

2. Codes d'affichage de ces types de données avec printf
 
entiers relatifs   code(1)
char %hhd
short %hd
int %d
long %ld
long double %lld
  
réels code(2)
float %f
double %lf ou %g
long double   %llf ou %lg

Légende :
(1) Pour les entiers naturels, remplacer d par :
  u pour l'écriture décimale,
  o pour l'écriture octale, et
  X pour l'écriture hexadécimale (variante %x pour écrire abcdef au lieu de ABCDEF).
(2) %e pour l'écriture scientifique (variante %E pour remplacer l'indicateur d'exposant 'e' par 'E')

3. Mise en forme de l'affichage

Exemples :
%12d : l'entier sera affiché sur au moins 12 caractères en ajoutant si nécessaire des espaces avant.
%–12d : idem mais les espaces seront ajoutés à droite.
%012d : ajoute des '0' au lieu d'espace.
%7.3f : pour un réel, 7 chiffres avant la virgule (ou des espaces) et 3 chiffres après.