Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Warchangel 17. 04. 2012, 16:37:46

Název: Více než 32bitová proměnná v C
Přispěvatel: Warchangel 17. 04. 2012, 16:37:46
Aky typ premennej musim definovat, aby som do nej mohol ulozit viac ako 32 bitove cislo?
Název: Re:Jazyk C - 32 bit premenna
Přispěvatel: Jaro 17. 04. 2012, 16:54:46
Treba pouzit: long long
Název: Re:Jazyk C - 32 bit premenna
Přispěvatel: mslebodnik 17. 04. 2012, 16:59:51
long ale to  zalezi od systemu, ci je 64bit , alebo 32
int64_t by malo byt stale.  pripadne long long alebo double pre floating point
Název: Re:Jazyk C - 32 bit premenna
Přispěvatel: anonym. 17. 04. 2012, 17:13:04
long ale to  zalezi od systemu, ci je 64bit , alebo 32
int64_t by malo byt stale.  pripadne long long alebo double pre floating point

staci mu long long - rikal vice nez 32 bit.
misto int64_t pouzij int32_t (myslim sys/types.h)
Název: Re:Jazyk C - 32 bit premenna
Přispěvatel: Waseihou 17. 04. 2012, 17:26:31
Na co to potřebuješ a kolik bitů to číslo má mít? Může být záporné? Nebo jde o indexaci prvků pole/vektoru? Nebo o kryptografii či jiné matematické výpočty?

určitě si udělej někde na začátku zdrojáku nejlépe v headeru:

typedef unsigned long long BigInteger;
const BigInteger BigIntegerMin = 0ULL;
const BigInteger BigIntegerMax = ~0ULL;

a pak všude používej BigInteger x = 1234;

výhodou je že později můžeš kdykoliv změnit co je BigInteger, nebo použít podmíněný překlad pro různé překladače

Pokud potřebuješ více než 64 bitů a nebo některý z cílových kompilátorů/standardů vůbec tyto typy nezná, můžeš použí gmp

http://gmplib.org/

wikipedie má pěkný example pro ilustraci:

http://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library