Da ISO/IEC 9899:A cosa servono i tipi interi con larghezza minima?
7.18.1.2 tipi interi minima larghezza
1 Il nome typedef int_leastN_t designa un tipo integer firmato con una larghezza di almeno N, numero intero tale che nessuna firmato digitare con una dimensione minore ha almeno la larghezza specificata. Quindi, int_least32_t denota un tipo intero con segno con una larghezza di almeno 32 bit.
Perché dovrei mai usare questo tipo?
Quando sto decidendo quale tipo dovrei prendere per una variabile di cui ho bisogno, allora chiedo a me stesso: "Quale sarà il più grande valore che potrebbe mai essere trasportato?"
Quindi trovo una risposta, controlla qual è il minimo 2 n che è più grande di quello, e prendi il tipo intero esatto corrispondente.
Quindi in questo caso potrei usare anche un numero intero di larghezza minima. Ma perché? Come già so: non sarà mai un valore più grande. Quindi, perché prendere qualcosa che a volte potrebbe coprire ancora di più come ho bisogno?
Tutti gli altri casi posso IMAGIN di dove anche valida come ad esempio:
"Ho un tipo che sarà almeno di dimensione ..." - L'implmentation non può sapere quale sarà il più grande (per esempio) l'input dell'utente che otterrò mai, quindi aggiustare il tipo al momento della compilazione non sarà d'aiuto.
"Ho una variabile in cui non è possibile determinare quale dimensione dei valori sarà trattenuta in fase di esecuzione."
-Come può sapere il compilatore al momento della compilazione? -> Non riesce a trovare anche la dimensione del byte di raccordo.
Quindi, qual è l'utilizzo di questi tipi?
Upvote per la modifica. Non mi ero reso conto che i tipi "intN_t" potevano essere effettivamente emulati nel software se non altrimenti disponibili. – user694733
@Jens e perché dovrei usare int_least32_t invece di int_fast32_t per quello scopo? – dhein
@Zaibis Perché l'efficienza dello spazio invece della velocità potrebbe essere la tua priorità. – Jens