Domanda

Devo usare numeri interi senza segno che potrebbero estendersi a più di 4 byte, che tipo dovrei usare?

PS Ci scusiamo per il " noobism " ma questo è tutto: D

NB: ho bisogno di numeri interi perché devo fare divisioni e occuparmi solo delle parti intere e in questo modo int sono utili

È stato utile?

Soluzione

long long , intero a 64 bit ... qui puoi trovare alcuni riferimenti sui tipi di dati e sugli intervalli ...

Altri suggerimenti

Includi semplicemente < stdint.h > e usa int64_t e uint64_t (poiché vuoi unsigned, vuoi uint64_t).

Esistono diverse altre utili varianti su quell'intestazione, come le varianti minime (uint_least64_t è un tipo con almeno 64 bit) e le varianti veloci (uint_fast64_t è il tipo intero più veloce con almeno 64 bit). Molto utili sono anche intptr_t / uintptr_t (abbastanza grande per un puntatore void *) e intmax_t / uintmax_t (tipo più grande).

E se per qualche motivo il tuo compilatore non ha un < stdint.h > (poiché IIRC è uno standard C, non uno C ++), puoi usare boost / cstdint.hpp (che puoi usare anche se hai un < stdint.h > ;, poiché in quel caso dovrebbe semplicemente inoltrare all'intestazione del compilatore) .

Fai la tua scelta:

long long (& # 8211; 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807)

unsigned long long: (da 0 a 18.446.744.073.709.551.615)

Se hai bisogno di numeri interi molto lunghi (precisione arbitraria), puoi anche provare la libreria gmp , che fornisce anche un'interfaccia basata sulla classe C ++.

unsigned long long - è lungo almeno 64 bit

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top