Was bedeutet %?



  • Hi,

    ich probiere gerade ein Programm zu verstehen (in SystemC), wo ich an einer Zeile scheiter:

    data[(first + num_elements) % max] = c;
    

    darunter folgt noch

    ++ num_elements;
    private:
    enum e { max = 10 };
    char data[max];
    int num_elements, first;
    

    first ist auf 0 gesetzt.
    Das ganze geht um eine FIFO, die Zeile oben stammt aus einem Producer. Ich sehe, dass er an einer Stelle in data das c einfügt, aber ich verstehe das "%"-Zeichen nicht.
    Kann mir vielelicht jemand von Euch das erklären? Unter http://www.iro.umontreal.ca/~aboulham/F6221/a04/SimpleFIFO.htm findet Ihr sonst noch einmal das ganze Program.
    Wäre echt cool, wenn mir das jemand von Euch erklären könnte...

    MfG, Ozzy



  • % ist ein modulo,

    beispiel:

    5%2 = 1
    12%8 = 4

    er gibt nicht das ergebnis aus sondern nur den restwert



  • Stelfer schrieb:

    % ist ein modulo,

    beispiel:

    5%2 = 1
    12%8 = 4

    er gibt nicht das ergebnis aus sondern nur den restwert

    Der Division



  • mit dem % wird in diesem fall ein 'wrap around' gemacht. wenn die letzte adresse des FIFOs beschrieben wurde, geht's am anfang weiter.

    btw: dieser FIFO scheint nicht sehr auf speed ausgelegt zu sein.
    berechnen von 'indizierung/addition/modulo' pro byte ist echt übel...



  • Jo, vielen Dank, auf den Gedanken hätte ich ja auch kommen können...
    Dachte, vielleicht wird der Array-Inhalt geshiftet oder so, dass immer von vorne gelesen und von hinten geschrieben wird...
    Aber macht Sinn! Vielen Dank noch einmal für Eure schnelle Antwort!!!

    MfG, Ozzy

    P.S. Ich liebe dieses Forum! Schnelle, und super Antworten!!! DANKE!!!


Anmelden zum Antworten