Qu'est-ce que size_t en C ?

Je m'embrouille avec size_t en C. Je sais qu'il est retourné par l'opérateur sizeof. Mais qu'est-ce que c'est exactement ? Est-ce un type de données ?

Disons que j'ai une boucle for :

for(i = 0; i < some_size; i++)

Dois-je utiliser int i; ou size_t i; ?

Solution

[De Wikipedia] [1] :

Selon la norme ISO C de 1999 (C99), size_t est un nombre entier non signé type d'au moins 16 bits (voir les sections 7.17 et 7.18.3).

size_t est un type de données non signé défini par plusieurs normes C/C++, par exemple, la norme C99 ISO/IEC 9899, qui est défini dans stddef.h.[1] Il peut être importé en plus par l'inclusion de stdlib.h car ce fichier subit de façon interne inclut stddef.h.

Ce type est utilisé pour représenter la taille d'un objet. Les fonctions de la bibliothèque qui prennent ou renvoient des tailles s'attendent à ce que celles-ci qu'elles soient du type ou qu'elles aient le type de retour de size_t. En outre, les fonctions les plus fréquemment utilisé par les compilateurs l'opérateur sizeof le plus fréquemment utilisé par le compilateur doit être évalué à une valeur constante compatible avec le type size_t. valeur constante compatible avec size_t.

[1] : http://en.wikipedia.org/wiki/Size_t

En conséquence, size_t est un type garanti pour contenir n'importe quel indice de tableau.

Commentaires (9)

size_t est un type non signé. Il ne peut donc pas représenter de valeurs négatives (

Commentaires (17)

La page de manuel de [types.h][1] indique :

size_t doit être un type entier non signé.

[1] : http://www.opengroup.org/onlinepubs/007908799/xsh/systypes.h.html

Commentaires (0)