booléen
Les valeurs boléennes peuvent être indifféremment rerésentées par un entier, ou un bool : 0 est considéré comme faux et toute valeur entière (char, int, unsigned int, long, unsigned long ) différente de 0 est considérée comme vaie.
Le type bool qui a deux valeurs true et false.
chaîne de caractères
Les chaînes de caractères sont notées
entre guillemets : "ceci est une chaine de caractères". Les
caractères entre guillemets peuvent être des séquences
d'échappement. Une chaîne de caractères est représentée
en mémoire par la suite des caractères qui la compose suivie
d'un caractère de code 0. Ce sont des chaînes à zéro
terminal.
énumérations
On peut définir des types en donnant l'énumération des éléments constituant le type :
enum
booleen { faux, vrai};
enum
jour {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche};
Ces nouveaux types sont des sous-ensembles de int.
Dans l'exemple précédent, faux vaut 0 et vrai 1. Malheureusement
les identificateurs (vrai, faux, lundi, mardi ...) ne sont utilisables
que de façon interne : cout<<mardi écrit 1 sur
l'écran. En revanche, ils permettent d'augmenter la lisibilité
des programmes : mercredi est plus clair dans un programme que 2,
mardi ou vrai ne sont pas ambigus, alors que 1 ... D'autre
part ce sont des entiers, donc mardi+mercredi est licite et vaut
3.
union
L'union, comme l'énumération, est un type défini par l'utilisateur. L'union est un type qui permet d'interpréter des données différentes de différentes façon :
union
x {int a; char b [4];};
x
f;
f.a=1684234849;
cout
<<f.b[0]<<" "<<f.b[1]<<" "<<f.b[2]<<"
"<<f.b[3];
//
f.b[0]='a'; f.b[1]='b'; f.b[2]='c'; f.b[3]='d';
L'espace occupé par des données de ce type est l'espace occupé par le membre de l'union qui occupe le plus d'espace. L'accès aux membres de l'union se fait via les sélecteurs de membre.
Les membres d'une union peuvent être spécifiés
private, protected, ou public, et une union peut être
munie de fonctions membres ainsi que de constructeurs et/ou destructeurs.
typedef
Le mot clé typedef permet de définir de nouveaux noms de type en les associant à un constructeur de type.
Exemple :
typedef
int entier; // entier est
synonyme de int
typedef
char str20 [21]; // str20 est une chaîne de 20 caractères
typedef
union { int a; char b[4];} x; // x est l'union
typedef
union x { ... } y; // x et y sont deux unions identiques