Però io non metto in dubbio questo. Perdonatemi ma sono cose di architettura che non ricordo più benissimo. Siamo tutti d'accordo che chi fa le operazioni (dovrebbe essere la ALU) lavora sui registri del processore e siccome un processore a 64bit dovrebbe avere registri a 64bit, in teoria potrebbe lavorare anche su interi a 64bit senza problemi. Però ciò non toglie che chi fa i conti a livello software è il compilatore, il quale potrebbe fare degli artifici (ovviamente meno performanti) per far si che io possa lavorare su interi a 64bit anche su macchine a 32bit. Secondo me questo si sposa molto bene con le varie definizioni di int32_t e int64_t.
Siamo tutti d'accordo che un int ha dimensioni variabili (anche se io all'inizio pensavo di no), però vorrei capire se siamo anche d'accordo sul fatto che io possa lavorare bene con interi a 64bit anche su processori a 32bit, se il compilatore mi da una mano.
In soldoni, visto che il problema sollevato è di tipo pratico, quello che vorrei dire al nostro amico che ha aperto il thread è che sì, se vuoi lavorare con il tipo 'int' devi usare un sizeof per capire in range numerico, però se vuoi stare più tranquillo oppure necessiti di un range specifico ti conviene usare i tipi di dati definiti da stdint.h e lavorare con quelli senza il sizeof. Questo implica ovviamente problemi di portabilità e a questo proposito due pagine interessanti sono
questa e
questa. L'ultimo link risponde anche alla domanda sul range:
An N-bit signed type has values in the range -2N-1 or 1-2N-1 to 2N-1-1, while an N-bit unsigned type has values in the range 0 to 2N-1.
Emanuele