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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Ospite
Rispondi a questa discussione...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Crea Nuovo...

Info

Per offrirti il miglior servizio possibile il sito utilizza cookies, anche di terze parti e profilazione. Utilizzando il sito acconsenti al loro impiego. Privacy Policy Termini di utilizzo