Recentemente ho scoperto l'esistenza dello standard di tipo più veloce, principalmente int_fast32_t e int_fast64_t.Qual è la differenza tra intXX_t e int_fastXX_t?
Mi hanno sempre detto che, per l'uso normale architettura tradizionale, si dovrebbe utilizzare meglio classica int & lungo che dovrebbero sempre adattarsi alla capacità di lettura processore standard e così evitare inutili conversioni numeriche.
Nel C99 standard, si dice nel §7.18.1.3p2:
"Il nome typedef int_fastN_t indica il tipo integer più veloce firmato con una larghezza di almeno N. Il nome typedef uint_fastN_t designa il più veloce tipo intero senza segno con una larghezza di almeno N. "
E c'è anche una citazione su di esso in §7.18.1.3p1:
"Il tipo designato non è garantito di essere più veloce in ogni caso; se l'implementazione non ha fondati motivi per la scelta un tipo piuttosto che un altro, sceglierà semplicemente un tipo intero che soddisfi i requisiti di firma e larghezza. "
Non è chiaro per me cosa significhi veramente . Non capisco quando dovrei usare questo tipo e quando non dovrei.
Ho cercato su Google un po 'e ho trovato che alcuni opensourceprojects hanno cambiato alcune delle loro funzioni ad esso, ma non tutti loro. Non hanno davvero spiegato il motivo per cui hanno modificato una parte e solo una parte, del loro codice.
Sapete quali sono i casi/usi specifici quando int_fastXX_t sono veramente più veloci di quelli classici?
+1. Mi sono interrogato su questo per un po 'di tempo, e il [C rationale] (http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf) è tranquillo sull'argomento . –