Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    [c] input da tastiera

    Ciao, mi vergogno immensamente a fare una domanda del genere ma a quanto pare sono costrettoXD
    Volevo fare un programma in C e, avendo iniziato col C++, devo familiarizzare un po' con l'i/o, il programma di "esercizio" è una banale somma tra 2 numeri:
    codice:
    int somma(int a,int b){ 	
    int c = a+b; 	
    return c; 
    }  
    int main(){  	
    printf("inserisci il primo numero:\n"); 
    	int primo; 	scanf("%d",&primo); 	
    printf("inserisci il secondo numero:\n"); 	
    int secondo; 	
    scanf("%d",&secondo); 	
    printf("la somma di %d e %d è:%d \n",primo,secondo,somma(primo,secondo));  	
    return 0; }
    Il problema è che, avviandolo, la frase "inserisci il primo numero" non compare, ma il programma si blocca subito in attesa dell'input da tastiera!
    Cosa sbaglio??

  2. #2
    in c standard non puoi dichiarare una variabile nel mezzo del codice
    tutte le variabili vanno dichiarate in testa alla funzione

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    No ti sbagli non è quello...infatti ho appena notato una cosa strana!
    Eseguendo il programma da console funziona perfettamente, questa cosa me la fa quando lo eseguo da dentro eclipse... :S

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Il fatto che le dichiarazioni di variabili, in C puro, vadano *tutte* all'inizio del corpo di ciascuna funzione è vero, ma ciò non dovrebbe compromettere il funzionamento del programma (al massimo dovresti ottenere un errore o almeno un warning in fase di compilazione). Ora il fatto che tu usi Eclipse può dare luogo praticamente a qualsiasi fonte di errore... di peciso, sei sicuro che sia solo la prima stampa che non avviene? Se inserisci il primo numero cosa succede dopo? E tra le altre cose, visto che Eclipse non mi pare abbia un compilatore integrato per C/C++, quale compilatore stai usando? Io comunque mi libererei di quell'IDE il prima possibile.
    every day above ground is a good one

  5. #5
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Ciao, ma c'è un motivo per cui occorra definire le variabili all'inizio?Onestamente non ho mai sentito una cosa simile e mi sembra una forzatura...
    Cmq la dinamica è questa: aspetta l'input da tastiera per entrambi i numeri e, una volta inseriti, stampa in ordine le stringhe "inserisci primo","inserisci secondo" e "risultato è".
    Sto usando mingw come compilatore, in effetti eclipse (che si allaccia a questo) è più adatto per java e lo vedo parecchio "impacciato" nel c...conoscete un IDE migliore? Non ditemi devcpp che lo odio a morte.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da Dark867
    Ciao, ma c'è un motivo per cui occorra definire le variabili all'inizio?Onestamente non ho mai sentito una cosa simile e mi sembra una forzatura...
    Non è una "forzatura", semplicemente è una caratteristica non prevista dal C "classico" (ISO C90); in realtà è stata introdotta poi nello standard successivo C99 (evidentemente per conformità al C++, similmente ai commenti con //), ma molti programmatori C preferiscono non ricorrervi lo stesso un po' perché non tutti i compilatori implementano le features del nuovo standard e un po' per motivi di abitudine/tradizione/puritanesimo/fede. Comunque di sicuro non è quella l'origine del problema perché se il compilatore non se ne lamenta significa che prevede la possibilità di dichiarazioni miste a codice.

    Originariamente inviato da Dark867
    Cmq la dinamica è questa: aspetta l'input da tastiera per entrambi i numeri e, una volta inseriti, stampa in ordine le stringhe "inserisci primo","inserisci secondo" e "risultato è".
    Sto usando mingw come compilatore, in effetti eclipse (che si allaccia a questo) è più adatto per java e lo vedo parecchio "impacciato" nel c...conoscete un IDE migliore? Non ditemi devcpp che lo odio a morte.
    Il Dev infatti *non va* utilizzato perché è vecchio, non più in sviluppo da anni e pieno di bug. Per la scelta dell'IDE dipende principalmente dal sistema su cui lavori: su Windows la scelta più ovvia sarebbe Visual C++ (sì, va bene anche per il C) ma c'è anche Code::Blocks (c'è la versione con compilatore mingw integrato). Su Linux ce ne sono tanti come il solito Code::Blocks, KDevelop (principalmente per KDE) o Anjuta (principalmente per GNOME) oppure una qualsiasi combinazione editor di testo + gcc. Ma per tutto questo comunque ti basta qualche ricerca sul web o anche su questo forum visto che sono discussioni quasi all'ordine del giorno.
    every day above ground is a good one

  7. #7
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Ho lavorato un po' con code blocks per il c++ ma poi ho preferito avere tutto in un unico IDE che è eclipse, mi sa che tornerò a quello!

    Guarda, nemmeno in C++ ho mai definito prima le variabili...volevo più che altro capire il perchè di tale scelta!Il linguaggio è compilato, quindi non c'è nessun overhead a creare variabili in mezzo al codice: il compilatore trova da sè le definizioni di variabili e nel programma generato sistema le cose in modo di allocarle sullo stack all'ingresso della funzione.
    E' a mio avviso una forzatura perché, per l'appunto, forza una certa organizzazione del codice che non sempre potrebbe far piacere.

  8. #8
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    La scelta del C di dover dichiarare prima tutte le variabili risale agli albori del linguaggio: in altre parole è così e basta. Poi è arrivato qualcuno che la pensava come te e ha pensato di superare questo limite. Compilatori C puri ce ne sono ancora in giro, anche se nel mercato mainstream circolano più i compilatori C++. Per questo non hai mai avuto problemi.
    Se però dovessi compilare quel codice con un compilatore C puro avresti degli errori.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  9. #9
    diciamo che, per rispetto dello standard originario, si tende a mettere le dichiarazioni tutte in testa in modo da garantire che il codice sia portabile (a me, personalmente, è capitato relativamente spesso che al posto del classico warning mi sputasse fuori un errore su variabili non dichiarate con alcuni compilatori)

    in generale quindi si tende a non usare lo standard c99 in quanto non è ancora universalmente supportato. Se dai un occhiata a programmi in c fatti professionalmente (esempio banale il kernel di linux, oppure anche praticamente tutti quei programmi scritti in c che girano su linux) non troverai mai una variabile definita in mezzo al codice.

  10. #10

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.