variable long definicion c++ int short

c++ - long - ¿Cuándo usar `short` sobre` int`?



unsigned short (4)

(Vea la respuesta de Eric para una explicación más detallada)

Notas:

  • En general, int se establece en el ''tamaño natural'', la forma entera que el hardware maneja de manera más eficiente
  • Cuando se usa short en una matriz o en operaciones aritméticas, el entero short se convierte en int , por lo que esto puede introducir un impacto en la velocidad al procesar enteros short
  • El uso short puede conservar la memoria si es más angosto que int , lo que puede ser importante cuando se usa una matriz grande
  • Su programa utilizará más memoria en un sistema int 32 bits en comparación con un sistema int 16 bits

Conclusión:

  • Use int menos que la conservación de la memoria sea crítica, o su programa use mucha memoria (por ejemplo, muchos arreglos). En ese caso, use short .

Hay muchas preguntas que preguntan por la diferencia entre los tipos de entero short e int en C ++, pero en la práctica, ¿cuándo se elige short sobre int ?


En general, no prefieres short sobre int .

El tipo int es el tamaño de palabra nativo del procesador
Por lo general, un int es el tamaño de palabra del procesador.

Por ejemplo, con un procesador de tamaño de palabra de 32 bits, un int sería de 32 bits. El procesador es más eficiente usando 32 bits. Suponiendo que el short es de 16 bits, el procesador todavía obtiene 32 bits de la memoria. Así que no hay eficiencia aquí; en realidad es más largo porque el procesador puede tener que desplazar los bits para colocarlos en la posición correcta en una palabra de 32 bits.

Elección de un tipo de datos más pequeño Hay tipos de datos estandarizados que tienen una longitud de bits específica, como uint16_t . Estos son preferidos a los tipos ambiguos de char, short, e int . Estos tipos de datos específicos de ancho se usan generalmente para acceder al hardware o comprimir el espacio (como los protocolos de mensajes).

Escogiendo un rango menor
El tipo de datos short se basa en el rango, no en el ancho de bits. En un sistema de 32 bits, tanto short como int pueden tener la misma longitud de 32 bits.

Una vez que la razón para usar short es porque el valor nunca pasará de un rango dado. Esto suele ser una falacia porque los programas cambiarán y el tipo de datos podría desbordarse.

Resumen
En la actualidad, no uso más short . Utilizo uint16_t cuando uint16_t dispositivos de hardware de 16 bits. Utilizo unsigned int para cantidades, incluidos los índices de bucle. Yo uso uint8_t , uint16_t y uint32_t cuando el tamaño importa para el almacenamiento de datos. El tipo de datos short es ambiguo para el almacenamiento de datos, ya que es un mínimo. Con la llegada de los archivos de encabezado stdint , ya no hay necesidad de short .


Si no tiene ninguna restricción específica impuesta por su arquitectura, yo diría que siempre puede usar int . El tipo short está destinado a sistemas específicos donde la memoria es un recurso precioso.


Usted elige short sobre int cuando:

Ya sea

  • Desea reducir la huella de memoria de los valores que está almacenando (por ejemplo, si está apuntando a una plataforma de poca memoria),
  • Desea aumentar el rendimiento aumentando el número de valores que se pueden empaquetar en una sola página de memoria (reduciendo las fallas de la página al acceder a sus valores) y / o en las cachés de memoria (reduciendo las fallas de caché cuando se accede a los valores), y el perfil ha revelado que hay mejoras de rendimiento que se tienen aquí,
  • O está enviando datos a través de una red o almacenándolos en un disco, y desea disminuir su huella (para ocupar menos espacio en disco o ancho de banda de red). Aunque para estos casos, debería preferir tipos que especifiquen exactamente el tamaño en bits en lugar de int o short , que puede variar según la plataforma (como quiera que sea una plataforma con un short 32 bits para poder leer un archivo escrito en un plataforma con un short 16 bits). Los buenos candidatos son los tipos definidos en stdint.h .

Y:

  • Tiene un valor numérico que no necesita tomar ningún valor que no pueda almacenarse en un short en su plataforma de destino (para un short 16 bits, esto es -32768 - 32767 , o 0 - 65535 para un 16- bit unsigned short ).
  • Su plataforma de destino (o una de sus plataformas de destino) usa menos memoria por short que por un int . El estándar solo garantiza que el short no es más grande que int , por lo que las implementaciones pueden tener el mismo tamaño para un short y para un int .

Nota:

char también se pueden utilizar como tipos aritméticos. Una respuesta a "¿Cuándo debo usar char lugar de short o int ?" se leería de forma muy similar a esta, pero con números diferentes ( -128 - 127 para un carácter de 8 bits, 0 - 255 para un unsigned char 8 bits)

En realidad, es probable que no desee utilizar el tipo short específicamente. Si desea un número entero de tamaño específico, hay tipos definidos en <cstdint> que deberían ser preferidos, ya que, por ejemplo, un int16_t tendrá 16 bits en cada sistema, mientras que no puede garantizar que el tamaño de un short sea ​​el mismo En todos los objetivos se compilará su código.