PDA

View Full Version : C/C++ aiutooo!!


zanardi84
28-01-2011, 17:27
Salve, questa volta mi sto trovando davanti ad un errore che proprio non so risolvere!

Ad un certo punto del programma ho impostato una chiamata ad una funzione.

variabile = funzione();

La variabile è stata dichiarata int e la funzione è stata implementata come int funzione()

Il guaio è che il return della funzione, invece di restituire lo 0 come chiedo con il return 0, mi ritorna un numeraccio.

Qualche consiglio per ricercare l'errore?

insane74
28-01-2011, 17:32
Salve, questa volta mi sto trovando davanti ad un errore che proprio non so risolvere!

Ad un certo punto del programma ho impostato una chiamata ad una funzione.

variabile = funzione();

La variabile è stata dichiarata int e la funzione è stata implementata come int funzione()

Il guaio è che il return della funzione, invece di restituire lo 0 come chiedo con il return 0, mi ritorna un numeraccio.

Qualche consiglio per ricercare l'errore?

http://it.wikipedia.org/wiki/Arithmetic_overflow

zanardi84
28-01-2011, 17:38
Ho una novità:
Stavo compilando con code::blocks su win 7 64 bit e ho trovato l'errore.
Facendo copia e incolla del codice su una virtual machine con win xp 32 bit con il dev cpp non ho alcun errore.

Perchè?

clockover
28-01-2011, 17:41
Potrebbe anche essere che hai memorizzato lo 0 in una variabile, e tu invece di restituire il valore della variabile restituisci il suo indirizzo di memoria

zanardi84
28-01-2011, 17:42
Potrebbe anche essere che hai memorizzato lo 0 in una variabile, e tu invece di restituire il valore della variabile restituisci il suo indirizzo di memoria

Ma non uso puntatori in quello spezzone. Li uso più avanti nel programma.

insane74
28-01-2011, 17:44
Ho una novità:
Stavo compilando con code::blocks su win 7 64 bit e ho trovato l'errore.
Facendo copia e incolla del codice su una virtual machine con win xp 32 bit con il dev cpp non ho alcun errore.

Perchè?

se posti il codice magari è meglio. ;)

cmq a naso, visto che a 32 bit non hai il numero "strano" e a 64 si, l'ipotesi è ti stai "spostando", chessò, di un int che a 32 bit è grosso 4 byte e a 64 bit è grosso 8...
magari nel codice punti "male" e becchi un indirizzo di memoria con dentro chissà cosa.

zanardi84
28-01-2011, 17:47
se posti il codice magari è meglio. ;)

cmq a naso, visto che a 32 bit non hai il numero "strano" e a 64 si, l'ipotesi è ti stai "spostando", chessò, di un int che a 32 bit è grosso 4 byte e a 64 bit è grosso 8...
magari nel codice punti "male" e becchi un indirizzo di memoria con dentro chissà cosa.

Interessante!
Il codice da postare è molto molto lungo, ma l'errore è subito seguendo un percorso di esecuzione.

Come è possibile che io punti male?

zanardi84
28-01-2011, 17:49
Aggiornamento: con code blocks, anche su xp mi restituisce il numeraccio!

Adesso provo con il dev su 7, ma non cambierà penso.

zanardi84
28-01-2011, 17:58
Provato con il dev su 7, tutto ok.