ludobat Inviato 25 Gennaio 2017 Segnala Condividi Inviato 25 Gennaio 2017 ciao a tutti, sto scrivendo una semplice funzione per sommare due interi su Xcode int main(void){ int a; int b; printf ("numero\n"); scanf("%d",a); printf("numero\n"); scanf ("%d",b); int sum; sum=a+b; printf("la somma è %d",sum); } ma accanto agli scanf mi da errore dicendomi che %d serve per un int* e non int, qualcuno sa perché? Link al commento Condividi su altri siti Altre opzioni di condivisione...
Admin Maghetto Inviato 25 Gennaio 2017 Admin Segnala Condividi Inviato 25 Gennaio 2017 Ciao ludobat, io ti aiuterei volentieri ma non uso Objective-c, se fosse in Swift... vediamo se c'è qualcun altro online... Link al commento Condividi su altri siti Altre opzioni di condivisione...
ludobat Inviato 25 Gennaio 2017 Autore Segnala Condividi Inviato 25 Gennaio 2017 Ciao, guarda non so neanche cosa sia Swift ahah Link al commento Condividi su altri siti Altre opzioni di condivisione...
Admin Maghetto Inviato 25 Gennaio 2017 Admin Segnala Condividi Inviato 25 Gennaio 2017 Perché non lo provi? Ti risparmieresti un bel po' di mal di testa... Link al commento Condividi su altri siti Altre opzioni di condivisione...
ludobat Inviato 25 Gennaio 2017 Autore Segnala Condividi Inviato 25 Gennaio 2017 lo proverò, ma adesso mi serve questo per la scuola.. comunque ho risolto aggiungendo un & prima della variabile all'interno della scanf() Link al commento Condividi su altri siti Altre opzioni di condivisione...
Lief Inviato 25 Gennaio 2017 Segnala Condividi Inviato 25 Gennaio 2017 Questo è C (Objective C è un superset di C quindi questo vale anche per Objective C, con la differenza che in Objective C ci sono altre librerie che possono essere usate in sostituzione). Il problema è molto semplice, in C quando devi leggere una variabile con scanf devi passagli il riferimento (l'indirizzo) della variabile in memoria, passandogli la variabile senza & gli stai passando il valore delle tue variabili (non l'indirizzo in cui andare a scrivere). Un'altra spiegazione la puoi trovare qui: http://www.science.unitn.it/~fiorella/guidac/guidac068.html Per imparare bene il C è molto importante capire quando stai passando un indirizzo e quando invece stai passando un valore. È importante che tu abbia corretto, ma è anche importante capire il perchè. I linguaggi moderni (Java, C#, Swift ecc...) usano un'allocazione automatica della memoria quindi non hanno di questi problemi, ma capire la differenza tra le due cose è comunque importante. Per finire il mio consiglio è di inizializzare sempre le variabili (anche se non è obbligatorio). quindi all'inizio del tuo programma scriverai int a = 0; int b = 0;. Questo perchè senza inizializzarle non puoi sapere quale valore è contenuto all'interno di tali variabili e in caso di malfunzionamento questo significa problemi. l'inizializzazione in alcuni linguaggi (Java) è fatta automaticamente, ma in C è meglio ricordarsi di farla sempre (è in realtà buona pratica farlo in qualsiasi linguaggio). Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.