Gamme de types numériques en C ++
Il peut sembler étrange, mais la norme du C ne pas dire exactement comment grand un nombre de chacun des types de données peut accueillir. La norme ne parle que de la taille relative de chaque type de données. Par exemple, il est indiqué que le maximum long int est au moins aussi grande que le maximum int.
Les auteurs de C ++ ne cherchaient pas à être mystérieux. Ils voulaient simplement pour permettre au compilateur de mettre en œuvre absolu le plus rapide possible pour le code de la machine de base. La norme a été conçu pour fonctionner pour tous les différents types de processeurs qui exécutent des systèmes d'exploitation différents.
Cependant, il est utile de connaître les limites de votre mise en oeuvre particulière. Le tableau montre la taille de chaque type de numéro sur un PC Windows en utilisant le / compilateur gcc Code :: Blocks.
Variable | Taille (octets) | Précision | Gamme |
---|---|---|---|
court | 2 | exact | -De 32768 à 32767 |
int | 4 | exact | 2147483648 2,147,483,647 |
long | 4 | exact | -2147483648 2,147,483,647 |
long long int | 8 | exact | -9.223.372.036.854.775.808 à 9.223.372.036.854.775.807 |
flotteur | 4 | 7 chiffres | ± 3.4028 x 10 ±38 |
long | 8 | 16 chiffres | ± 1.7977 x 10 ±308 |
long double | 12 | 19 chiffres | ± 1.1897 x 10 ±4932 |
Tentative de calculer un nombre qui est au-delà de la gamme de ce type est connu comme un débordement. Le standard C ++ laisse généralement les résultats d'un débordement comme indéfini. Voilà une autre façon que les définisseurs de C ++ sont restés flexible.
Sur le PC, une virgule flottante résultats de débordement dans une exception, qui, si non traitées fera de votre programme de tomber en panne. Aussi mauvais que cela puisse paraître, un débordement d'entier est pire - C ++ génère silencieusement une valeur incorrecte sans se plaindre.