E' un errore inserire due return nella stessa funzione ? Se si, che problemi potrebbe creare ?
Esempio:
codice:int funzione(int a, int b) { if (a>b) return a; else return b; }
E' un errore inserire due return nella stessa funzione ? Se si, che problemi potrebbe creare ?
Esempio:
codice:int funzione(int a, int b) { if (a>b) return a; else return b; }
non è errore anzi è pratica comune tra i programmatori inserire più return per gestire ad esempio eventuali errori durante l'esecuzione del programma
Non è un errore ma sarebbe più leggibile un sorgente con un unico punto di ritorno.
In pratica quella stessa funzione potevi scriverla
oppurecodice:int funzione(int a, int b) { return ((a>b) ? a : b); }
per maggiore chiarezza, con un solo punto di uscita.codice:int funzione(int a, int b) { int ret = b; if (a>b) ret=a; return ret; }
No MP tecnici (non rispondo nemmeno!), usa il forum.
Purtroppo un professore, appunto di programmazione, mi ha chiaramente detto che non è possibile inserire due return in una funzione.Ma non mi ha dato nessuna spiegazione...
Quindi ho pensato che ci fosse qualche spiegazione suprema
Grazie ad entrambi
Che non sia possibile "tecnicamente" è una stupidaggine ...
Se la interpreti come ti ho detto (unico punto di uscita "logico"), allora è sensato.
No MP tecnici (non rispondo nemmeno!), usa il forum.
forse il tuo professore intendeva che non è possibile che una funzione esegua due return, ossia restituisca due valori...
Anche io pensavo che intendesse questo, invece no, mi ha detto chiaramente in una funzione deve esserci un solo return, questo dopo avergli appunto mostrato un programma con delle funzioni in cui erano presenti più return ma ( logicamente ) ritornavano solo un valore...lo lascio con le sue convinzioniOriginariamente inviato da sime1
forse il tuo professore intendeva che non è possibile che una funzione esegua due return, ossia restituisca due valori...
No ... ti consiglierei di prenderlo sul serio ...Originariamente inviato da Ghemon-a lo lascio con le sue convinzioni
Come ti dicevo, è una regola da seguire ... leggi
Single Function Exit Point
http://c2.com/cgi/wiki?SingleFunctionExitPoint
e
Coding Tip: Have A Single Exit Point
http://www.tomdalling.com/blog/codin...gle-exit-point
ma anche altre risorse simili su internet.
No MP tecnici (non rispondo nemmeno!), usa il forum.
Grazie mille !! Il secondo link, in particolare, mi è stato molto utile ! Infatti fino a questo punto ho ragionato con 2 o 3 return, quando si parla di funzioni più complesse che ritornano più valori....Originariamente inviato da oregon
No ... ti consiglierei di prenderlo sul serio ...
Come ti dicevo, è una regola da seguire ... leggi
Single Function Exit Point
http://c2.com/cgi/wiki?SingleFunctionExitPoint
e
Coding Tip: Have A Single Exit Point
http://www.tomdalling.com/blog/codin...gle-exit-point
ma anche altre risorse simili su internet.
E' una tecnica da evitare, in ogni modo non necessaria.
Puoi anche farlo senza istruzioni condizionali (oltre al necessario confronto):
codice:#include <stdio.h> static int funzione(const int a, const int b){ const int kVect []={ b, a }; return kVect [a > b]; } int main (void){ printf ("funzione: %d;\n", funzione (7, 4)); return 0; }