Mi sono imbattuto in un punto interessante oggi in una recensione sulla revisione del codice . @Veedrac recommened in questa risposta che i tipi di dimensione variabile (ad esempio int
e long
) devono essere sostituiti con tipi di dimensioni come uint64_t
e uint32_t
. Citazione dai commenti di quella risposta:
The sizes of int and long (and thus the values they can hold) are platform-dependent. On the other hand, int32_t is always 32 bits long. Using int just means that your code works differently on different platforms, which is generally not what you want.
Il ragionamento dietro lo standard che non fissa i tipi comuni è parzialmente spiegato qui da @supercat. C è stato scritto per essere portabile su architetture, al contrario del montaggio che di solito veniva utilizzato per la programmazione dei sistemi al momento.
I think the design intention was originally that each type other than int be the smallest thing that could handle numbers of various sizes, and that int be the most practical "general-purpose" size that could handle +/-32767.
Per quanto mi riguarda, ho sempre usato int
e non sono davvero preoccupato per le alternative. Ho sempre pensato che fosse il tipo più con le migliori prestazioni, la fine della storia. L'unico posto in cui pensavo che la larghezza fissa sarebbe utile è quando si codificano i dati per l'archiviazione o per il trasferimento su una rete. Raramente ho visto tipi di larghezza fissa nel codice scritti da altri.
Sono bloccato negli anni '70 o esiste effettivamente una motivazione per usare int
nell'era di C99 e oltre?