error C2106: ‚=‘ : left operand must be l-value
Error executing cl.exe.
Sie kommt bevorzugt vor, wenn ich versuche, char[] auf char[] zuzuweisen. Ich kann damit absolut nichts anfangen, Erklärung mit Beispielen wäre nett.
Danke
error C2106: ‚=‘ : left operand must be l-value
Error executing cl.exe.
Sie kommt bevorzugt vor, wenn ich versuche, char[] auf char[] zuzuweisen. Ich kann damit absolut nichts anfangen, Erklärung mit Beispielen wäre nett.
Danke
Hi,
error C2106: ‚=‘ : left operand must be l-value
Error executing cl.exe.
Das bedeutet, Du kannst Werte nur einer variable, nicht aber einem Ausdruck oder einer Konstante zuweisen. Beispiel:
int a = 5; ist OK, da a ein lvalue ist.
int a * 3 = 15; geht nicht, da a ein Ausdruck ist und keine Variable.
Sie kommt bevorzugt vor, wenn ich versuche, char[] auf char[]
zuzuweisen. Ich kann damit absolut nichts anfangen, Erklärung
mit Beispielen wäre nett.
Genau. Wahrscheinlich machst Du etwas wie
s1[] = ‚Mist‘;
s2[] = ‚Toll‘;
s1[] = s2[];
Das geht nicht, da sowohl s1 als s2 Speicherbereiche bezeichnen. Du mußt strcpy oder memcpy dafür nehmen.
Gruß
J.
Hallo,
error C2106: ‚=‘ : left operand must be l-value
Error executing cl.exe.Sie kommt bevorzugt vor, wenn ich versuche, char[] auf char[]
zuzuweisen. Ich kann damit absolut nichts anfangen, Erklärung
mit Beispielen wäre nett.
Wenn du den Ausdruck
a = b;
wird der linken Variablen der Wert der Rechten zugewiesen. Dadurch hat sich die Bezeichnung „l-value“ für die LINKE Variable, bzw Ausdruck, und „r-value“ für die RECHTE eingebürgert.
Ein l-value muss immer ein Ausdruck sein welchem ein Wert zugewiesen werden kann.
Ein r-value darf in den meisten Fällen eine Variable oder eine Konstante sein, auf jeden FAll muss der Ausdruck einen Wert zurückliefern. Zum Beispiel kann bei folgendem Kode die Fehlermeldung „left operand must be r-value“ entstehen.
void f1(void)
{
};
void f2(void)
{
int a;
a = f1(); // Da f1() keinen Wert zurückliefert kann
// a nichts vernünftiges zugewiesen werden.
};
MfG Peter(TOO)