Sarebbe definito dall'architettura che stavi usando. Su un chip Zilog z80 (chip incorporato comune) avrebbero una dimensione mentre potevano essere una dimensione completamente diversa su un chipset x86. Tuttavia, le dimensioni stesse sono rapporti fissi tra loro. Essenzialmente brevi e lunghi non sono tipi ma si qualificano per il tipo int. Gli intervalli brevi saranno di un ordine di grandezza inferiore a (normale) int e quelli lunghi saranno di un ordine di grandezza superiore. Quindi, il tuo Int è limitato a 4 byte, il qualificatore breve lo limita a 4 byte sebbene 2 byte sia anche molto comune e il qualificatore lungo lo potenzia potenzialmente a 8 byte anche se può essere inferiore a 4 byte. Tieni presente che anche questo è soggetto alla lunghezza della parola, quindi su un sistema a 32 bit il limite massimo è di 4 byte per l'int iniziale, il che equivale a un normale int. Quindi, Short ≤ Int ≤ Long.
Tuttavia, se lo allunghi di nuovo, puoi inserire l'int alla cella successiva dandoti 8 byte interi di memoria. Questa è la dimensione della parola per le macchine a 64 bit, quindi non devono preoccuparsi di queste cose e basta usare una cella per i long ints permettendo loro di essere un altro ordine al di sopra degli standard, mentre i long long int sono davvero poco.
Per quanto riguarda la scelta, si riduce a qualcosa che i programmatori Java, per esempio, non devono preoccuparsi. "Qual è la tua architettura?" Dal momento che tutto dipende dalla dimensione della parola della memoria della macchina in questione, devi capirlo prima di decidere quale usare. Quindi scegli le dimensioni ragionevoli più piccole per risparmiare quanta più memoria possibile perché la memoria verrà assegnata indipendentemente dal fatto che tu utilizzi tutti i bit o meno. Quindi salva dove puoi e scegli i pantaloncini quando puoi e quando non puoi e se hai bisogno di qualcosa di più grande di quello che intendi di solito; avresti allungato quanto necessario fino a quando non hai raggiunto il limite massimo. Quindi dovrai fornire grandi numeri di routine o recuperarli da una libreria.
C potrebbe benissimo essere un "assembly portatile", ma devi comunque conoscere il tuo hardware.