192 votes

Quelle est la différence entre un size_t et int en C++?

Dans plusieurs C++ exemples que je vois un usage du type size_t où j'aurais utilisé un simple int. Quelle est la différence, et pourquoi size_t devrait être mieux?

Merci à tous.

162voto

Joao da Silva Points 3626

À partir de l'amicale de Wikipédia:

Le stdlib.h et stddef.h fichiers d'en-tête de définir un type de données appelé size_t qui est utilisé pour représenter la taille d'un objet. Bibliothèque de fonctions qui prennent des tailles s'attendre à être de type size_t, et l'opérateur sizeof renvoie la valeur size_t.

Le type réel de size_t est dépend de la plateforme; une erreur commune est de supposer size_t est le même que unsigned int, ce qui peut conduire à des erreurs de programmation, en particulier que les architectures 64 bits deviennent de plus en plus répandus.

Vérifiez également Pourquoi size_t questions

38voto

Axelle Ziegler Points 1903

size_t est le type utilisé pour représenter les tailles (comme son nom l'indique). Sa plate-forme (et même potentiellement mise en œuvre) à charge, et doit être utilisé uniquement à cette fin. De toute évidence, ce qui représente une taille, size_t est pas signé. De nombreux stdlib, y compris les fonctions malloc, sizeof et diverses chaîne des fonctions de l'utilisation size_t comme un type de données.

Un int est signée par défaut, et même si sa taille est également la plateforme de personne à charge, il sera fixe 32bits sur la plupart des machines modernes (et bien size_t est de 64 bits sur 64 bits architecture, int restent 32bits long sur les architectures).

Pour résumer : l'utilisation size_t pour représenter la taille d'un objet et int (ou en compte) dans les autres cas.

9voto

graham.reeds Points 9363

C'est parce que size_t peut être autre chose qu'un int (peut-être une structure (struct). L'idée est qu'il découple c'est le travail du type sous-jacent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X