Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Modulo Division und warum %% und nicht % im printf Befehl?

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.01.2003
    Beiträge
    12

    Modulo Division und warum %% und nicht % im printf Befehl?

    Hallo,

    Ich bin Anfänger was C anbetrifft. Ich habe folgendes Übungsprogramm:

    /*
    Beispiel einer Modulofunktion
    */
    #include <stdio.h>
    void main(void)
    {

    int zahl_a = 5;
    int zahl_b = 2;
    int div_rest;
    div_rest = zahl_a % zahl_b;
    printf ("\n%d %% %d = %d\n",zahl_a, zahl_b,div_rest);

    }


    Kann mir bitte jemand sagen warum in der letzten Zeile des Befehls printf %% also 2mal hintereinander % enthalten muß, und zwar an der Stelle printf ("\n%d %% %d = %d\n",..........

    Habe ich es so richtig verstanden, daß %d für den Inhalt von Variablen steht und % als Modulo-Divisionszeichen? Aber was bedeutet %%?


    Wenn ich es so schreibe: printf ("\n%d % %d = %d\n",.......... dann erhalte ich bei Ausführung
    meines Programms nach dem Kompilieren immer die Ausgabe 5 %d =2

    Wenn ich es so mache, wie im Übungsprogramm dann erhalte ich 5 : 2 =1
    (1 ist der Rest)

    Ich kann im Lehrmaterial leider keinen Hinweis finden, warum im printf Befehl %% steht und in anderen Programmen mit Modulo Division %.

    Viele Grüße
    N.

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    %% gibt das %-zeichen aus.

    ausgerechnet wird die sache ja eine
    zeile weiter oben. sprintf gibt eine
    zeichenkette formatiert aus.

    cu, stop.h

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Genau.

    Bei printf oder ähnlichen Befehlen, kann man mit Hilfe eines Formatstrings die Ausgabe/Eingabe festlegen.
    Damit die Funktion erkennen kann, was normaler Text ist und was eine Formatangabe, beginnt eine Formatangabe mit einem % Zeichen.

    Das % ist hier das Escape-Zeichen.
    Um das % selbst zu erhalten, muß man darum %% schreiben.

    Ähnliches gilt ja bei \
    In einem C Code dient \ um spezielle Zeichen zu beschreiben.
    \n ist zB eine newline, \r ein Carriage Return, \t ein Tabulator.
    Um nun den \ zu erhalten muß man \\ schreiben.

    das %d bedeutet, das an dieser Stelle eine Ganzzahl (Integer) eingesetzt werden soll.

    Die Formatmöglichkeiten von printf und Co sind sehr mächtig.
    zB: %00d formatiert eine Ganzzahl immer mit mindestens 3 Stellen, wobei bei kürzeren Zahlen vorne mit 0 aufgefüllt wird.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    28.11.2002
    Beiträge
    86
    %% gibt ein% aus, nur% wird als Operator gesehen und gibt nicht % aus.
    avuton

  5. #5
    Registrierter Benutzer
    Registriert seit
    06.01.2003
    Beiträge
    12

    Smile %%

    Hallo!

    Danke an Alle für Eure Antworten.

    Gruß

    N.

  6. #6
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    und warum gibt \% nicht % aus?

    schreibe ich
    Code:
    #include <stdio.h>
    
    main()
    {
    	printf("Gebe aus: \%");
    }
    hab ich folgende Ausgabe: Gebe aus:

    Erst wenn man folgendes schreibt:
    Code:
    #include <stdio.h>
    
    main()
    {
    	printf("\"Gebe aus: \%\"");
    }
    hat man die Ausgabe: "Gebe aus: %"
    Dann kann man sogar statt \% auch nur % schreiben und es wird angezeigt. Das finde ich....strange
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •