Estaría definido por la arquitectura que estaba utilizando. En un chip Zilog z80 (chip integrado común) tendrían un tamaño único, mientras que podrían ser de un tamaño completamente diferente en un chipset x86. Sin embargo, los tamaños en sí mismos son proporciones fijas entre sí. Esencialmente, short y long no son tipos, pero califican para el tipo int. Las entradas cortas serán de un orden de magnitud menor que las int (regulares) y las entradas largas serán de un orden de magnitud mayor. Digamos que su Int está limitado a 4 bytes, el calificador corto lo limita a 4 bytes, aunque 2 bytes también es muy común y el calificador largo lo aumenta potencialmente a 8 bytes, aunque puede ser menor a 4 bytes. Tenga en cuenta que esto también está sujeto a la longitud de la palabra, por lo que en un sistema de 32 bits tendría un máximo de 4 bytes por int de todos modos, haciendo lo mismo que un int normal. Por lo tanto, Corto ≤ Int ≤ Largo.
Sin embargo, si lo vuelve a alargar, puede empujar el int a la siguiente celda para obtener 8 bytes completos de almacenamiento. Este es el tamaño de palabra para las máquinas de 64 bits, por lo que no tienen que preocuparse por esas cosas y solo usan la celda para entradas largas, lo que les permite estar en otro orden por encima de las entradas estándar, mientras que las entradas largas y largas realmente se vuelven poco.
En cuanto a cuál elegir, se reduce a algo por lo que los programadores de Java, por ejemplo, no tienen que preocuparse. "¿Cuál es tu arquitectura?" Dado que todo depende del tamaño de palabra de la memoria de la máquina en cuestión, debe comprenderlo por adelantado antes de decidir cuál usar. Luego, elige el tamaño razonable más pequeño para ahorrar tanta memoria como sea posible porque esa memoria se asignará tanto si usa todos los bits como si no. Por lo tanto, ahorra donde puede y elige pantalones cortos cuando puede e ints cuando no puede y si necesita algo más grande que las entradas regulares que da; alargarías según sea necesario hasta que alcances la palabra techo. Entonces necesitaría suministrar rutinas de números grandes o obtenerlas de una biblioteca.
C bien puede ser "ensamblaje portátil" pero aún debe conocer su hardware.
<stdint.h>