Více než 32bitová proměnná v C

Více než 32bitová proměnná v C
« kdy: 17. 04. 2012, 16:37:46 »
Aky typ premennej musim definovat, aby som do nej mohol ulozit viac ako 32 bitove cislo?
« Poslední změna: 18. 04. 2012, 10:17:38 od Petr Krčmář »


Jaro

Re:Jazyk C - 32 bit premenna
« Odpověď #1 kdy: 17. 04. 2012, 16:54:46 »
Treba pouzit: long long

Re:Jazyk C - 32 bit premenna
« Odpověď #2 kdy: 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

anonym.

Re:Jazyk C - 32 bit premenna
« Odpověď #3 kdy: 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)

Waseihou

Re:Jazyk C - 32 bit premenna
« Odpověď #4 kdy: 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