Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno existuje v C funkce pro kontrolu přetečení?

Čau, potřebuju zkontrolovat přetečení, mám to v typu unsigned long a hlídat jestli to nepřeteče konstantu ULONG_MAX. Číslo musím načítat po znaku, takže vždy to přičítám tak, že vynásobím to staré 10 a přičtu tu načtenou číslici, ale když to přeteče, tak už je pozdě a číslo je malé a splňuje podmínku že je menší než ULONG_MAX. Použil jsem pomocné z usnigned long long, ale to funguje pouze v 32bitovém překladači, v 64bitovém je bohužel long a long long úplně to stejné číslo:( ..
Vím, že pro jiné jsou funkce které, to jakoby otestují dopředu, že to vyzkouší, ale v C o nich nevím, tak jestli jsou a nebo jestli někdo nemá nějaký nápad jak to vyřešit. Díky moc

Předmět Autor Datum
A co takhle po každém vynásobení zkontrolovat jestli to není méně než před tím?
Wikan 06.10.2011 14:33
Wikan
To jsem vyzkoušel, ale nefungovalo nevím proč. Napadlo mě, kontrolovat, zda je to nové číslo větší n…
.pata. 06.10.2011 14:39
.pata.
Z jakého důvodu to nefungovalo? Asi jsi to měl špatně.
Wikan 06.10.2011 14:47
Wikan
Můžu ti sem dát kód mám? A ono to funguje jen pro nějaké čísla, nevím proč? třeba 6544084638 to neud…
.pata. 06.10.2011 14:53
.pata.
Ten už tu měl být hned od začátku.
Wikan 06.10.2011 14:55
Wikan
tak v příloze [mod]Příloha na žádost autora mailem odstraněna (Rce)[/mod]
.pata. 06.10.2011 15:01
.pata.
Nikde nevidím, že bys proměnnou number inicializoval.
Wikan 06.10.2011 15:06
Wikan
ajo promiň ta je nahoře v globálních, pracuju s ní pak dál, kde ji konvertuju atd. EDIT: je v unsig…
.pata. 06.10.2011 15:08
.pata.
Ale ono to půjde i jinak: unsigned long max = ULONG_MAX / 10; int maxmod = ULONG_MAX % 10; ... ...…
Wikan 06.10.2011 15:14
Wikan
vypadá to, že to funguje, ještě budu testovat, ale díky moc.. mohl by jsi mi prosím, jen stručně nap…
.pata. 06.10.2011 15:32
.pata.
No prostě si spočítáš jak maximálně velké může číslo být, aby po vynásobení 10 a přičtení dalšího čí…
Wikan 06.10.2011 15:35
Wikan
už jsem to zkusil, jsem si to po krocích vypsal na papír.. akorát tam musí být i number == maximum u…
.pata. 06.10.2011 15:46
.pata.
Teď jsem nepochopil, co jsi mi tam vlastně upravil. Jak smazat nahraný soubor netuším.
Wikan 06.10.2011 15:51
Wikan
oki a nic nic, já myslel po prvé to s tím, že tam má být jen cislice > ... jako, že tam nemá být to… poslední
.pata. 06.10.2011 15:54
.pata.
Nacitat to do retezce, na konec zkontrolovat a pak, pokud je to v poradku, tak prevest na cislo
Jan Fiala 06.10.2011 14:46
Jan Fiala
nesmím použít funkci pro převod z řetězce na číslo, musím to pojednom načítat a přičítat bohužel
.pata. 06.10.2011 14:47
.pata.
32bitovy prekladac ma typ int64 (alebo __int64) P.S. to porovnavanie pred operaciou je jednoduchsie…
MM.. 06.10.2011 15:43
MM..

už jsem to zkusil, jsem si to po krocích vypsal na papír.. akorát tam musí být i number == maximum u té císlice, protože to potom jinak vypíná při každé číslicí větší než to maxmod ..

ještě malej dotaz, jde smazat ten soubor nahraný tam? nemusel by ho nikdo najít totiž.. jen jestli nevíš jak? díky

oki a nic nic, já myslel po prvé to s tím, že tam má být jen cislice > ... jako, že tam nemá být to maximum ==... předtím, ale pak mi došlo, že jsi myslel, že ne => a to už jsem měl změněné, toho jsem si všiml ..

oki nevadí no, snad to nikdo nebude hledat :D .. díky moc za radu, už jsem nevěděl jak na to

Zpět do poradny Odpovědět na původní otázku Nahoru