Falsche Zahlenausgabe in C



  • Hallo erst mal ans Forum,
    zuerst muss ich gleich mal erwähnen dass ich absoluter C Neuling bin. Bin gerade fleissig am lernen, stosse aber immer wierder auf das selbe Problem. Ich benutze den Dev-C++ Compiler. Wenn ich einer Variablen einen ganzzahligen Wert zuweise und den dann einfach wieder anzeigen lasse ,bekomme ich nicht die Zahl sondern eine ganz andere zurück. Wenn ich z.B. einer variablen I, den Wert 9 zuweise und die variable I dann ausgebe, bekomme ich auf dem Bildschirm sie Zahl 2293620 angezeigt! Hab mal eine kleine schleife angehängt wo das Problem auftauch, hat aber mit der Schleife nix zu tun, der Fehler ist auch da wenn ich nur ne Zahl zuweise und dann wieder auslese. Compiler lüuft auf WinXP. Wäre für jeden Tip dankbar, da ich sonst nicht mehr weiterkomm.

    Schleife:

    #include <stdio.h>

    int main ()
    {
    int i;
    {
    for (i=0; i<100; i= i+1)
    printf ("%d \n",&i);
    }
    getchar();
    return 0;
    }



  • Einfach i übergeben:

    printf ("%d \n",i);
    

    nicht adresse von i (&i)



  • Hallo,
    also der einzige Fehler den ich jetzt sehe wäre das die "{" Klammer an der falschen Stelle ist:

    TBL schrieb:

    int i;
       {
        for (i=0; i<100; i= i+1)
        printf ("%d \n",&i);
        }
    }
    
    int i;
    for(i=0; i<100; i++)
    {
      printf("%d \n",&i);
    }
    

    aber ich glaube nicht das dein Problem damit zu tun hat.



  • Also die "ganz andere Zahl", die du bekommst, sind die Adressen(wegen des Adressoperators & vor i), an denen deine gewünschten Zahlen gespeichert sind. Die Funktion printf() erwartet keine Adresse einer Varablen, sondern deren Inhalt. scanf() erwartet eine adresse(pointer).;)

    Also:
    printf("%d\n", i);



  • Danke an alle Antworten die ich bekommen habe, ging ja super fix!
    Es lag an dem übergebenden Adressoperator. Ich hab mir das ich weiss nicht wie oft angeschaut und alles mögliche probiert. So blind muss man erst mal sein! :-)!

    THX


Anmelden zum Antworten