Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C] uso della funzione exit(0)

    Buonasera forum! Vi chiedo di spiegarmi come funziona la funzione (scusate il gioco di parole eheh) exit(0), dato che con il c sono una principiante... so che exit(0) inserito a fine programma indica EXIT_SUCCESS quindi programma senza errori, mentre exit(1) indica EXIT_FAILURE. Tuttavia il suo funzionamento mi rimane piuttosto oscuro..sopratutto, cosa che sarà forse un dubbio stupido, se è il programmatore stesso a inserire a fine programma exit(0), come fa a sapere che il programma e scritto correttamente? O lo aggiunge solo dopo aver compilato, eseguito e quindi controllato? Grazie in anticipo ?^^

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    come dici tu, la exit(0) serve per segnalare che è andato tutto bene, mentre un valore diverso da zero indica uno status diverso (potrebbe essere di errore, anche se non è obbligatorio).
    Per quanto riguarda la tua domanda su quando e dove la mette il programmatore, è abbastanza semplice: la exit(0) viene messa al termine della parte di codice che rappresenta una esecuzione "normale" del programma, mentre le altre le potresti trovare, ad esempio, in parti di codice che gestiscono un qualche tipo di errore. Esempio:

    codice:
    if(errore_1)
        exit(1);
    else if (errore_2)
        exit(2);
    ...
    else // e' andato tutto bene
        exit(0);

    Facci sapere se hai altri dubbi.

    Ciao!

  3. #3
    Quindi il programmatore prima controlla che la porzione di codice funzioni correttamente, e poi in caso affermativo aggiunge exit(0)... allo scopo di segnalare a terzi che il programma funziona?

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    No, non ci siamo capiti... Prendi questo programma:

    codice:
    int main() {
        // istruzioni varie
        // ...
    
        istruzione_che_puo_creare_problemi;
    
        if(tutto_ok)
            exit(0);
    
        else
            exit(1);
    }

    Quindi non si mette exit(0) per segnalare che il codice è stato scritto correttamente: tutto il codice che viene rilasciato dovrebbe essere corretto!
    Si mette per segnalare al chiamante (che può essere un programma di livello superiore) che l'esecuzione è andata a buon fine.

    Altro esempio: supponiamo che io scriva un programma bellissimo che legge il contenuto di un file, fa alcune operazioni e poi termina. Tutto bene, ma cosa succede se il file che devo leggere non esiste? Potevo prevederlo in fase di scrittura del codice? No, quindi metto una gestione per le eccezioni, che sia in grado di affrontare anche questa eventualità, segnalando un errore. Se invece il file c'è, riesco a leggerlo, eccetera, allora tutto andrà per il verso giusto e il programma terminerà con una bella exit(0).

  5. #5
    Sei un grande adesso e tutto chiaro, grazie!!!

  6. #6
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Bene, mi fa piacere. Se hai altri dubbi siamo qui.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.