Extrait du cours le langage C++: Types de base et dérivés
C++ est ce que l’on a coutume d’appeler un langage typé. Le type des données manipulées est déterminé au moment de la compilation déjà. Un certain nombre de types de données sont prédéfinis par le langage : ce sont les types de base. Ces types de base peuvent être uti- lisés pour composer d’autres types, formés de collections d’identificateurs de types de base: il s’agit alors de types dérivés. Il est également possible à l’utilisateur de définir de nouveaux types, comme dans la majorité des langages typés.
C++ introduit de nouveaux types de données standard, en plus des types connus en C conventionnel. Tous les types standards connus en C peuvent être réutilisés avec des effets comparables en C++. Par rapport à C, C++ apporte une meilleure cohérence dans l’utilisation des types. Le contrôle de validité des types de données échangés entre les divers éléments du programme a été renforcé, éliminant ainsi un des principaux griefs que l’on pouvait faire à C. (strongly typed language, par opposition a loosely typed language). Ce caractère plus sévère du compilateur C++ fait malheureusement qu’un programme en langage C ne peut que rarement être porté sans autre sous C++.
Types de base
C++ implémente quelques types de base, dont les caractéristiques peuvent dépendre de l’implémentation sur une machine. Pour chaque implémentation, il est possible de connaître les détails par l’examen du fichier <limits.h>, qui spécifie l’implémentation utilisée.
Un exemple d’un tel fichier est donnée çi-après. Il s’agit d’une implémentation pour un Macintosh basé sur un CPU de la famille 32 bit Motorola 680X0 (X > 2).
#define CHAR_BIT 8
#define MB_LEN_MAX 1
#define SCHAR_MIN (~127)
#define SCHAR_MAX 127
#define UCHAR_MAX 255
#define CHAR_MIN (~127)
#define CHAR_MAX 127
#define SHRT_MIN (~32767)
#define SHRT_MAX 32767
#define USHRT_MAX 0xFFFF
#if __SC__ /* THINK C++ */
#define INT_MIN (~2147483647)
#define INT_MAX 2147483647
#define UINT_MAX 0xFFFFFFFF
#else /* THINK C */
#if __option(int_4)
#define INT_MIN (~2147483647)
#define INT_MAX 2147483647
#define UINT_MAX 0xFFFFFFFF
#else
#define INT_MIN (~32767)
#define INT_MAX 32767
#define UINT_MAX 0xFFFF
#endif
#endif
#define LONG_MIN (~2147483647L)
#define LONG_MAX 2147483647L
#define ULONG_MAX 0xFFFFFFFFL
Ainsi, sur une machine 64 bit, certaines de ces définitions (par exemple INT_MAX) peuvent changer pour réfléter les possibilités étendues du CPU.
……..
Le langage C++: Types de base et dérivés (Cours PDF)