L-Value und R-Value kurze Erklärung??



  • Hallo,

    kann mir jemand in kurzen einfach Wörtern erklären was ein L-Value und was ein R-Value ist bzw. was das überhaupt bedeutet? Ich komme aus den Erklärungen in den Büchern net zurecht.

    Schonmal danke.



  • Hi,

    Ein L-Wert ist ein Wert, der etwas zugewiesen bekommen kann.
    (a + 10) = 10;

    a + 10 ist hier z.B. kein L-Wert, a alleine schon.
    Na ja, blödes Beispiel, aber egal.

    mfG eisflamme



  • streamilein schrieb:

    Hallo,

    kann mir jemand in kurzen einfach Wörtern erklären was ein L-Value und was ein R-Value ist bzw. was das überhaupt bedeutet? Ich komme aus den Erklärungen in den Büchern net zurecht.

    Schonmal danke.

    bin ned 100% sicher 😉 :

    Ausdruck = Ausdruck // Eine normale C++ Anweisung (Zuordnung)
    L-Value = R-Value // Der rechte Ausdruck ist der R-Value, der linke der L-Value

    Der Ausdruck der auf der rechten Seite des Zuweisungsoperators steht, muss dem linken Ausruck zuweisbar sein, damit der Compiler zufrieden ist. Falls der R-Value aber nicht dem L-Value zuweisbar ist, dann ist der Compiler nicht zufrieden (evt. Casting nötig).



  • danke das brachte mich schon mehr wie die erklärungen aus den lehrbüchern.

    char buchstaben[3] = "abc"; // Fehler!(kein Platz für '\0')

    wieso das? bei [3] ist doch Platz für 4 (0-3) oder net?



  • Hi,

    nnnnnnnnnnnnä.
    \0 ist das Teil, das den String beendet und das braucht auch Platz.

    char buchstaben[4] = "abc"; // schööööön
    char buchstaben[]  = "abc"; // schöner
    const char buchstaben[] = "abc"; // am schönsten
    

    MfG Eisflamme



  • ja schon aber ich dachte bei

    char buchstaben[3] steht in
    [0] a;
    [1] b;
    [2] c;
    [3] \0;

    oder was steht da jeweils drin?



  • streamilein schrieb:

    oder was steht da jeweils drin?

    Es steht schon das richtige drin, aber
    char foo[3];
    ist ein array mit 3 elementen (0, 1, 2)



  • Genau das sind typische Anfängerfehler. Wenn man sich mal daran gewöhnt hat das alles bei 0 beginnt glaubt man dies auch bei
    char[3];



  • Und wenn man beachtet, das die 3 nicht den höchsten Bezeichner, sondern die Menge angibt 😉


Anmelden zum Antworten