stdint.h in C99 offre molte opzioni per dimensioni, tipi e intervalli interi: così tanti non so quali scegliere!Scelta della dimensione/intervallo intero più adatto da utilizzare per le variabili
Conosco lo how to use size_t
and ptrdiff_t
quando appropriato e utilizzo tipi di dimensioni fisse per la memorizzazione e la trasmissione. La mia domanda riguarda i valori che verranno memorizzati solo nella memoria della macchina host.
Per esempio, una struttura per l'immagine potrebbe contenere questi membri:
struct image {
integer width, height; /* pixel dimensions of the image */
integer bits_per_pixel;
...
};
Se width
e height
non potrà mai superare i SHRT_MAX
, dovrebbe un short
essere usato, o bastone con int
? Un'immagine non può avere larghezza o altezza negative, quindi usa un tipo senza segno? Forse (u)int_least16_t
è la scelta corretta? Qualcos'altro?
Se bits_per_pixel
sarà mai superare il valore di 64 utilizzo char
, unsigned char
, uint8_t
, int
o qualcos'altro?
Cosa utilizzeresti in questo esempio e perché?
In che modo l'architettura CPU in cui verrà eseguito il codice influisce sulla scelta? vale a dire PPC o x86, 32 o 64 bit.
In che modo il dispositivo su cui verrà eseguito il codice influisce sulla scelta? Ad esempio, desktop, telefono, console.
In che modo la scelta si riferisce alle prestazioni e all'ottimizzazione?
La mia domanda in termini semplici è: come scegliere quale numero intero usare?
+1 per gli esempi di dati di dimensioni fisse. – schot