Types élémentaires


void
vide



unsigned/
signed
char
'0' 'a'
caractère
short int
12
12u, 12U
-12
014
0xc



entier
int

long int
12l, 12L
12ul
-12l

float
3.14f

réel
double
3.14, 31.4e-1, 31.4E-1
long double
3.14L

Vecteur

int valeurs[10];
int t[] = {1, 2, 3};
char s[] = "Bonjour";

Pointeur

int * pi = &i;
int (* f)(int) = fact;
int * t = {1, 2, 3};
char * s2 = "Bonjour";

Regroupement hétérogène

struct personne {
    int age;
    char * nom;
};
...
struct personne dupont;
...
dupont.age = 22;
dupont.nom = "Dupont";

Enumération

enum booleen {faux = 0, vrai = 1};

Union

union int_char {
    char cc[sizeof(int)];
    int i;
};

Taille et limites

La fonction sizeof permet de connaître la taille en octet d'un type.
Les valeurs limites des types élémentaires sont données par les fichiers d'entête standard limits.h et float.h
Le programme issu de test_types.c affiche le résultat suivant sur un PowerPC G4 sous Mac OS X :
Tailles
sizeof(char) = 1
sizeof(short int) = 2
sizeof(int) = 4
sizeof(long int) = 4
sizeof(float) = 4
sizeof(double) = 8
sizeof(long double) = 8
sizeof(void *) = 4
sizeof(int *) = 4
sizeof(float *) = 4
sizeof(struct{int, char *}) = 8
sizeof(struct{int, char *} *) = 4

Limites
CHAR_MIN = -128, CHAR_MAX = 127, UCHAR_MAX = 255
SHRT_MIN = -32768, SHRT_MAX = 32767, USHRT_MAX = 65535
INT_MIN = -2147483648, INT_MAX = 2147483647, UINT_MAX = 4294967295
LONG_MIN = -2147483648, LONG_MAX = 2147483647, ULONG_MAX = 4294967295
FLT_MIN = 0.000000 = 1.175494e-38, FLT_MAX = 340282346638528859811704183484516925440.000000 = 3.402823e+38
FLT_MANT_DIG = 24, FLT_MAX_EXP = 128
DBL_MIN = 0.000000 = 2.225074e-308, DBL_MAX = 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.000000 = 1.797693e+308
DBL_MANT_DIG = 53, DBL_MAX_EXP = 1024