Sono un po 'nuovo alla programmazione e stavo giocando alla codifica oggi cercando di utilizzare le funzioni e ho creato un semplice codice che ha risolto un problema di matematica che avevo in una delle mie classi. in pratica prende la formula (quantità di batteri) * 2^ore e lo calcola.Come gestire l'overflow in C
Il mio problema è che quando ottengo un numero molto grande non ritorna correttamente, ottengo sempre -2147483648 indietro dopo una certa dimensione di numero. Immagino che questo abbia qualcosa a che fare con l'overflow, ma non sono sicuro al 100% di come funzioni. Quello che sto cercando di capire è come ottenere i numeri reali che sto cercando dopo aver colpito questo overflow. Quindi, cosa posso fare per affrontare l'overflow?
Inizialmente avevo impostato tutto su int, ma dopo un po 'di lettura pensavo che cambiare tutto troppo a lungo potrebbe aiutarmi, ma non è stato così, se questa è una cosa terribile per me andare avanti e lasciarmi conoscere! Anche i numeri di test che sto usando sono 1500 e 24, che restituisce sempre il numero sopra.
Ecco il codice Grazie!
#include<stdio.h>
#include<math.h>
long bacteria(long b, long h);
int main(void)
{
long f,g;
scanf("%ld%ld",&f,&g);
f = bacteria(f,g);
printf("%ld\n",f);
return 0;
}
long bacteria(long b,long h)
{
long d;
printf("%ld %ld\n",b,h);
d = b * (pow(2,h));
return d;
}
Usa '' powl' per long', 'restituisce pow'' double' –
devo certo codice [qui] (https://groups.google.com/d/topic/comp.lang .apl/Lu2tgqanK5Q/discussione) derivato principalmente dal codice di esempio nel CFAQ. –
Grazie! Non avevo idea che Pow restituisse un doppio! – Yosvan10