Vai al contenuto


ludobat

problema int e %d

Recommended Posts

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é?

Modificato da ludobat
sintassi sbagliata causa correttore

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti


Ciao ludobat, io ti aiuterei volentieri ma non uso Objective-c, se fosse in Swift... vediamo se c'è qualcun altro online...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

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).

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti alla nostra comunità. È facile!

Crea un nuovo account

Accedi

Sei già iscritto? Accedi qui.

Accedi Ora

×