Dubbio su funzione int

di il
2 risposte

Dubbio su funzione int

Salve a tutti, preparando l'esame di informatica mi sono imbattuto in una cosa che non mi spiego. Ho realizzato una funzione per gestire un menu. La funzione era cosi

nt menu_scelta()
{
int selezione=0;

do
{
cout<<"[1]-funzione1"<<endl;
cout<<"[2]-funzione 2"<<endl;
cout<<"[3]-Esci"<<endl;
cout<<"Effettua una scelta: ";
cin>>selezione;
}while(selezione<1 || selezione>3);
}

Come si può vedere ho dimenticato di scrivere return selezione. Richiamandola nel main però e facendo scelta=menu_scelta(), dove scelta è una variabile intera nel main, a quest'ultima mi viene attribuito lo stesso il valore di selezione(nella funzione). In sostanza, funziona lo stesso anche senza il return. Qualcuno ha una spiegazione?

2 Risposte

  • Re: Dubbio su funzione int

    Fortuna. A me ritorna sempre 0.
    Prova a dichiarare un'altra variabile nella funzione, magari si comporta in modo diverso.
  • Re: Dubbio su funzione int

    Devi guardare il disassembly: nel tuo caso il return value probabilmente viene assunto come il primo dei registri del processore, il quale coinciderà con la prima variabile locale che hai dichiarato, la quale è proprio selezione.

    Ma non ci devi fare affidamento. Come ti ha fatto notare Alexv, si tratta di comportamento indefinito
Devi accedere o registrarti per scrivere nel forum
2 risposte