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

    Problema in C

    Buonasera sto iniziando in C e non riesco a capire una cosa:
    Perché se scrivo
    codice:
    #include <stdio.h>
    main()
    {
    printf("prova c");
    return 0;
    }
    il DOS si apre e si chiude subito?
    Mentre se inserisco lo stesso codice ma con
    codice:
    system("PAUSE")
    o con getch rimane aperto?
    Cosa cambia tra system e getch?
    Return cosa indica?

    Spero di non disturbare, grazie mille

  2. #2
    Utente di HTML.it L'avatar di Jey
    Registrato dal
    Jan 2013
    Messaggi
    41
    Return fa sì che si esca da una funzione.
    Nel tuo caso stai uscendo dalla funzione main, il che comporta la chiusura dell'applicativo.
    Se utilizzi system("PAUSE") o getch l'applicativo non si chiude perchè aspetta che l'utente prema un tasto sulla tastiera.

    Per la differenza tra system("PAUSE") e getch posso aiutarti relativamente perchè è da un po' che non uso il c.
    Comunque la differenza principale dovrebbe essere che system("PAUSE") non ti restituisce valore, mentre getch ti restituisce il carattere inserito.

  3. #3
    Perché se lascio solo return senza system il DOS si apre e si chiude? Anche se return lo levo cioè solo con printf! Il DOS rimane aperto solo se metto anche system o getch.

  4. #4
    Utente di HTML.it L'avatar di Jey
    Registrato dal
    Jan 2013
    Messaggi
    41
    In C il codice viene eseguito in modo sequenziale, ovvero riga per riga ( spero di non aver detto una ca***** ).
    Una funzione termina quando incontra l'istruzione return o quando arriva alla fine della stessa, quindi togliendo return non è cambiato nulla.

  5. #5
    Si su questo ci sono, ma non riesco a capire perché printf non funziona da solo ma deve necessariamente utilizzare o system o getch.

  6. #6
    Come ti è già stato spiegato, se lanci il programma direttamente la console rimane aperta solo per la durata dell'esecuzione del programma; se non metti un'istruzione di attesa (come la getch(), che attende la pressione di Invio prima di terminare) il programma termina così velocemente che la console appare per scomparire immediatamente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di Jey
    Registrato dal
    Jan 2013
    Messaggi
    41
    Nel pezzo di codice che hai scritto l'applicatico che generi fa questo:
    -Scrive prova c a video
    -Termina l'esecuzione perchè trova l'istruzione retrun 0 che lo fa uscire dalla funzione main

    Togliendo return 0 invece:
    -Scrive prova c a video
    -Termina l'esecuzione perchè arriva in fondo all'istruzione main

    Ora, se non vuoi che l'applicativo si chiuda subito devi fare in modo che non arrivi ad eseguire l'istruzione return o che arrivi in fondo alla funzione main.
    Inserendo system("PAUSE") o getch fai in modo che esso si aspetti la pressione di un tasto sulla tastiera e, finchè non premi niente, lui non termina la sua esecuzione e rimane quindi aperto

  8. #8
    Perfetto ora ho capito, scusatemi ma parto da zero quindi non riesco ad afferrare i concetti immediatamente!

  9. #9

    Moderazione

    Tra parentesi, in futuro ricordati di specificare un po' meglio i titoli delle discussioni (qui ho sistemato io), e magari di fare una ricerchina prima - l'argomento in questione è stato trattato molte volte.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.