Est-ce que sizeof renvoie le nombre d'octets ou le nombre d'octets d'un type en C?
Simplement mis en C et les variantes (contrairement à ce que la lavette java avec sa machine virtuelle) de la taille de types primitifs sur différentes cibles peuvent varier considérablement, et il n'y a vraiment aucune garantie, sauf si vous utilisez la largeur fixe les types définis dans le stdint.h
et même alors votre mise en oeuvre a pour les soutenir.
De toute façon hypothétiquement(parce que sur la plupart des machines modernes, un octet est un octet, à des fins de réseautage je suppose(ASCII)) ne sizeof retourne la taille d'un type de données en octets ou en octets?
source d'informationauteur awiebe
Vous devez vous connecter pour publier un commentaire.
Réponse:
sizeof
retourne la taille du type de la octets.Exemple:
sizeof(char)
est garanti à 100% pour être1
mais cela ne signifie pas, que c'est d'un octet (8 bits).Prouvé par la norme:
dans 6.5.3.4, point 2:
Également, dans la Section 3.6, point 3:
sizeof
donne la taille en octets. Toutefois, notez que le "byte" est un terme technique dans le C standard, et est définie de telle façon quesizeof(char) == 1
.sizeof
renvoie toujours la taille est le nombre d'octets. Mais selon wikipedia:À partir de ma propre expérience, de travailler sur des micro-contrôleurs exotiques " C " compilateurs, j'ai vu:
retour 1
retour 1
retour 2
Clairement, j'avais en face de la machine ont été le plus petit adressable entité était de 16 bits, de sorte que le sizeof n'est pas conforme à C89 ou C99.
Je dirais que sur les C89 & C99 systèmes compatibles, l'on a accepté la réponse est correcte.
Malheureusement, un "C" compilateur peut encore être appelé "C" du compilateur, même si elle ne se conforme pas à un jeune de 25 ans standard. J'espère que cette réponse aider à mettre les choses en perspective, compte tenu de systèmes plus exotiques.