tamaño - En C, ¿sizeof mide su resultado en bytes octetos o caracteres?
tamaño array c (3)
Aunque un char
se compone de 1 byte
en todos los compiladores que conozco, tuve la impresión de que C
no garantiza la longitud de un char
, solo garantiza que char < short < long
. Por lo tanto, asumí que sizeof
mide su resultado en char
para abstraerse de la plataforma en la que se está ejecutando. Para hacerlo más general, pensé que size_t
se define en términos de char
.
Pero ahora, en lo que puedo ver buscando en google, parece que sizeof
devuelve su resultado en bytes
.
¿Estaba completamente equivocado en mi suposición o hay más que eso?
La unidad utilizada por sizeof
es el char
. Uno de los axiomas del lenguaje es ese sizeof(char) == 1
.
Por lo tanto, para sistemas donde char
es mayor que 8 bits, sizeof
no mide en unidades de 8 bits.
Las unidades para sizeof
son chars.
Sin embargo, C define un byte como el tamaño de un char, y no el uso más común donde un byte equivale a 8 bits.
Si quieres saber cuántos bits es una char, usa la constante CHAR_BIT
en <limits.h>
char
es el tipo de datos C que representa un byte ; son conceptualmente lo mismo.
Si está preguntando si el resultado siempre está en octetos (valores de 8 bits), la respuesta es no ; está en bytes ( char
s), y si un byte tiene un número diferente de bits, entonces el resultado será en términos de múltiplos de esos muchos bits.