Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102

    [C] Inserire due return in una funzione

    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;
    }

  2. #2
    non è errore anzi è pratica comune tra i programmatori inserire più return per gestire ad esempio eventuali errori durante l'esecuzione del programma

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non è un errore ma sarebbe più leggibile un sorgente con un unico punto di ritorno.

    In pratica quella stessa funzione potevi scriverla

    codice:
    int funzione(int a, int b)
    {
       return ((a>b) ? a : b);
    }
    oppure

    codice:
    int funzione(int a, int b)
    {
       int ret = b;
    
       if (a>b) ret=a;
    
       return ret;
    }
    per maggiore chiarezza, con un solo punto di uscita.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102
    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

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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.

  6. #6
    forse il tuo professore intendeva che non è possibile che una funzione esegua due return, ossia restituisca due valori...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102
    Originariamente inviato da sime1
    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 convinzioni

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Ghemon-a lo lascio con le sue convinzioni
    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.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    102
    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.
    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....

  10. #10

    Re: [C] Inserire due return in una funzione

    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;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.