Sziasztok!
Szeretnék nagy (>(2^32)) egészeket kezelni gcc- vel. Ezt hogyan tehetem meg? Ha nem muszáj, nem szívesen használnék erre q célre double/ floatot, nincs valami direkt erre a célra használható típus? long int, long long int nem igazán akar működni. Ha esetleg nincs, hogy tennétek egyszerűen float/ double- val?
Köszi..
- 1415 megtekintés
Hozzászólások
^
Sehol egy ötlet? :- ).
- A hozzászóláshoz be kell jelentkezni
GMP (http://www.swox.com/gmp/ elvileg)
tetszőleges pontosság...
- A hozzászóláshoz be kell jelentkezni
Volt régen ez téma a hupon, keress rá...
- A hozzászóláshoz be kell jelentkezni
Konkrétan mi nem működik a long long-gal?
- A hozzászóláshoz be kell jelentkezni
Konkrétan az, hogy nem igazán szereti a nagy számokat :- ):
long long int c;
c = 4333444555;
gcc nagyegesz.c
nagyegesz.c: In function `main':
nagyegesz.c:8: warning: integer constant is too large for "long" type
Mindez 32 bites rendszeren.
64 bitesen legalább lefordul, bár a kezelése ott is problémás (legalábbis printf- nél túlcsordul, de nyílván nem %d kell neki, hanem valami más, ennek utánanézek).
- A hozzászóláshoz be kell jelentkezni
Lefelejtetted a "LL"-t a konstans végéről:
#include <stdio.h>
int main( void ){
long long int c;
c = 4333444555LL;
printf( "c=%lli\n", c );
return 0;
}
- A hozzászóláshoz be kell jelentkezni
Köszi, azóta áttértem off64_t- re... ., de tényleg lehagytam a 2L- t a végéről :- ).
- A hozzászóláshoz be kell jelentkezni
Az stdint.h-ban vannak ilyesmik:
http://www.opengroup.org/onlinepubs/000095399/basedefs/stdint.h.html
Pld:
Greatest-width integer types
The following type designates a signed integer type capable of representing any value of any signed integer type: intmax_t
The following type designates an unsigned integer type capable of representing any value of any unsigned integer type: uintmax_t
- A hozzászóláshoz be kell jelentkezni
A GMP -t én is ajánlom, szerintem elég korrektül megcsinálták, könnyű a használata, és gyorsan meg lehet tanulni.
Ha esetleg hálózaton küldenéd át ezeket a számokat, akkor az jusson eszedbe, hogy a gmp string-ként kezeli a számokat, így pl mpz_t típusokkal nem tudsz dobálózni..:)
- A hozzászóláshoz be kell jelentkezni