Saltar al contenido

¿Diferencia entre size_t y unsigned int?

Abraham, parte de nuestro staff, nos hizo el favor de redactar este post porque controla perfectamente dicho tema.

Solución:

si se usa para representar un valor no negativo, ¿por qué no lo usamos? unsigned int en vez de size_t

Porque unsigned int no es el único tipo entero sin signo. size_t podría ser cualquiera de unsigned char, unsigned short, unsigned int, unsigned long o unsigned long long, dependiendo de la implementación.

La segunda pregunta es que size_t y unsigned int son intercambiables o no y si no, ¿por qué?

No son intercambiables, por la razón explicada anteriormente. ^^.

¿Y alguien puede darme un buen ejemplo de size_t y su breve funcionamiento?

No entiendo muy bien lo que quieres decir con “su breve funcionamiento”. Funciona como cualquier otro tipo sin firmar (en particular, como el tipo al que está definido). Se le anima a utilizar size_t cuando estás describiendo el tamaño de un objeto. En particular, el sizeof operador y varias funciones de biblioteca estándar, como strlen(), regreso size_t.

Bonificación: aquí hay un buen artículo sobre size_t (y los estrechamente relacionados ptrdiff_t escribe). Razona muy bien por qué debería usarlo.

Hay 5 tipos de enteros sin signo estándar en C:

  • unsigned char
  • unsigned short
  • unsigned int
  • unsigned long
  • unsigned long long

con varios requisitos para sus tamaños y rangos (brevemente, el rango de cada tipo es un subconjunto del rango del siguiente tipo, pero algunos de ellos pueden tener el mismo rango).

size_t es un typedef (es decir, un alias) para algún tipo sin firmar, (probablemente uno de los anteriores, pero posiblemente un tipo de entero sin signo extendido, aunque eso es poco probable). Es el tipo producido por el sizeof operador.

En un sistema, podría tener sentido usar unsigned int para representar tamaños; en otro, podría tener más sentido usar unsigned long o unsigned long long. (size_t es poco probable que sea cualquiera unsigned char o unsigned short, pero eso está permitido).

El propósito de size_t es aliviar al programador de tener que preocuparse por cual de los tipos predefinidos se utiliza para representar tamaños.

Código que asume sizeof produce un unsigned int no sería portátil. Código que asume que produce un size_t es más probable que sea portátil.

size_t tiene una restricción específica.

Citando de http://www.cplusplus.com/reference/cstring/size_t/ :

Alias ​​de uno de los tipos enteros sin signo fundamentales.

Es un tipo capaz de representar el tamaño de cualquier objeto en bytes.: size_t es el tipo devuelto por el operador sizeof y se usa ampliamente en la biblioteca estándar para representar tamaños y conteos.

No es intercambiable con unsigned int porque el tamaño de int es especificado por el modelo de datos. Por ejemplo, LLP64 utiliza una de 32 bits int e ILP64 utiliza una de 64 bits int.

Si guardas alguna vacilación o disposición de innovar nuestro división puedes escribir una explicación y con deseo lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *