Mi sono imbattuto in un punto interessante oggi in una recensione su Code Review . @Veedrac ha raccomandato in questa risposta che tipi di dimensioni variabili (es. int
E long
) vengano sostituiti con tipi di dimensioni fisse come uint64_t
e uint32_t
. Citazione dai commenti di tale risposta:
Le dimensioni di int e long (e quindi i valori che possono contenere) dipendono dalla piattaforma. D'altra parte, int32_t è sempre lungo 32 bit. L'uso di int significa semplicemente che il tuo codice funziona in modo diverso su piattaforme diverse, che generalmente non è quello che desideri.
Il ragionamento alla base dello standard che non fissa i tipi comuni è parzialmente spiegato qui da @supercat. C è stato scritto per essere trasportabile su più architetture, al contrario dell'assemblaggio che di solito era usato per la programmazione dei sistemi in quel momento.
Penso che l'intenzione progettuale fosse originariamente che ogni tipo diverso da int fosse la cosa più piccola in grado di gestire numeri di varie dimensioni, e che int fosse la dimensione "generica" più pratica che potesse gestire +/- 32767.
Per quanto mi riguarda, ho sempre usato int
e non ero molto preoccupato per le alternative. Ho sempre pensato che fosse il più tipo con le migliori prestazioni, fine della storia. L'unico posto in cui pensavo che la larghezza fissa fosse utile è quando si codificano i dati per l'archiviazione o per il trasferimento in rete. Raramente ho visto tipi di larghezza fissa nel codice scritto da altri.
Sono bloccato negli anni '70 o c'è davvero una logica per l'utilizzo int
nell'era del C99 e oltre?