Welche Ausgabe sollte char c='1' haben?



  • Hallo,

    heiße Anna und studiere Wirtschaftsingenieurwesen. Letzte Woche haben wir mit der Programmiersprache C begonnen und heute habe ich schon die ertsen Probleme

    Hier der Programmcode (getchar() am Ende steht nur als "Pause" - nutze Dev-C++)

    /*BSP_11.C: Zeichenausgabe mit putchar */
    #include <stdio.h>

    int main(void)
    {
    char c='1';

    putchar(c);

    printf("\tRueckgabe: %d\n",putchar(c));
    /*Ausgabe des Rueckgabewerts von putchar() */
    getchar();
    }

    Mir zeigt die Ausgabe nun "11 Rueckgabe: 49" an... das kann ich mir nicht erklären.

    Dachte, dass mir die ASCII Tabelle vielleicht hilft, dem war aber auch nicht so...

    Vielleicht kann mir jemand helfen warum die Ausgabe 11 bzw. 49 anzeigt?! Das wäre super nett.

    Vielen Dank und Grüße

    Anna



  • /*BSP_11.C: Zeichenausgabe mit putchar */
    #include <stdio.h>
    
    int main(void)
    {
        char c='1';
    
        putchar(c);
    
        printf("\tRueckgabe: %d\n",putchar(c));
        /*Ausgabe des Rueckgabewerts von putchar() */
        getchar();
    }
    

    Die erste 1 kommt vom putchar()-Aufruf in Zeile 8. Die zweite 1 kommt vom putchar()-Aufruf in Zeile 10. Der Rest wird von printf() gemacht, statt %d wird die Rückgabe von putchar('1') eingesetzt. man: putchar gibt das Zeichen zurück, und '1' ist genau 49.

    nutze Dev-C++

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-237002.html
    🙂



  • Hallo, vielen Dank für deine schnell Antwort!

    Du hast mir schon geholfen, jedoch ist mir aber noch nicht ganz klar, warum in Zeile 10 bei der Ausgabe eine 1 vorher ausgegeben wird.

    printf("\tRueckgabe: %d\n",putchar(c));

    Vielleicht kann man mit dem putchar in der Klammer eine Referenz erzeugen, damit man weiß, von welchem Wert man das Zeichen ausgibt, also eben die 1? Kann ich mir das so erklären?

    Denn bei printf ("Characters: %c %c \n", 'a', 65); lautet die Ausgabe ja auch nur Characters: a A

    Das mit dem Zeichen aus der Ascii-Tabelle ist mir nun klar geworden - Vielen Dank!!!

    Grüße

    Anna



  • Wird es klarer wenn wir den Code umschreiben?

    #include <stdio.h>
    
    int main(void)
    {
        int tmp;
        char c='1';
    
        putchar(c); /* gibt "1" aus */
        tmp = putchar(c); /* gibt nochmal "1" aus */
    
        printf("\tRueckgabe: %d\n", tmp); /* gibt ASCII-Code von '1' aus
    }
    

    Genau das gleiche macht dein Code.


Anmelden zum Antworten