error C2106 Brauche Hilfe :)
-
Hi ho
Mein Compiler gibt mir Folgende Fehlermeldung bei 3 meiner Whileschleifen:
error C2106: '=': Linker Operand muss ein L-Wert sein
hier mal die jeweiligen Code-Ausschnitte:
void SSS::game() { int x; bool t; while (count <= 3 || sc = sh+2 || sh = sc+2); { system("cls"); cout<<"Computer: " << sc << " " << ":" << " "<< sh << " Spieler"<< endl; cout<<"\n\n\n\n"<<endl; cout<<"\t Bitte Wählen Sie aus : " << endl; cout<<"\t 1. Schere / 2. Stein 3. Papier" << endl; cin >> x; _sleep(2000); int y; srand ( time(NULL) ); do { y= rand() %3; } while ( y <= 0 && x = y); t=check(x,y); if (t == true) { sh=sh+1; count = count+1; } if (t == false) { sc=sc+1; count = count+1; } } if (count == 3 && sh > sc ) { gameend(true); } if (count == 3 && sh < sc ) { gameend(false); } }
Hier mal die Klasse:
class SSS{ private: int count; int sc; int sh; public: SSS(); void gameend(bool); void start(); void game(); void help(); bool check(int,int); };
Und fürn Notfall heir nochma der konstruktor er klasse:
SSS::SSS() { count=0; sc=0; sh=0; }
Hat wer ne idee was ich Falsch mache ? Danke
-
Du hast dort den Vergleich == mit der Zuweisung = verwechselt - und da die Zuweisung eine geringere Priorität hat als die logischen Operatoren, versuchst du, dem Wert "count <= 3 || sc" etwas zuzuweisen.
-
CStoll schrieb:
Du hast dort den Vergleich == mit der Zuweisung = verwechselt - und da die Zuweisung eine geringere Priorität hat als die logischen Operatoren, versuchst du, dem Wert "count <= 3 || sc" etwas zuzuweisen.
Danke
Jetzt habe ich nur Folgenden Fehler :error C2059: Syntaxfehler: '='
hier nochma mein code nach änderung
void SSS::game() { int x; bool t; while (count <== 3 || sc = sh+2 || sh = sc+2); { system("cls"); cout<<"Computer: " << sc << " " << ":" << " "<< sh << " Spieler"<< endl; cout<<"\n\n\n\n"<<endl; cout<<"\t Bitte Wählen Sie aus : " << endl; cout<<"\t 1. Schere / 2. Stein 3. Papier" << endl; cin >> x; _sleep(2000); int y; srand ( time(NULL) ); do { y= rand() %3; } while ( y <== 0 && x = y); t=check(x,y); if (t == true) { sh=sh+1; count = count+1; } if (t == false) { sc=sc+1; count = count+1; } } if (sh > sc ) { gameend(true); } if ( sh < sc ) { gameend(false); } }
-
Einen Operator <== gibt es ja auch nicht - du mußt schon die richtigen Gleichheitszeichen verdoppeln: In Zeile 5 bei "sc == sh+2" und "sh == sc+2" und in Zeile 20 bei "x == y".
-
CStoll schrieb:
Einen Operator <== gibt es ja auch nicht - du mußt schon die richtigen Gleichheitszeichen verdoppeln: In Zeile 5 bei "sc == sh+2" und "sh == sc+2" und in Zeile 20 bei "x == y".
void SSS::game() { int x; bool t; while (count !== 3 || sc == sh+2 || sh == sc+2); { system("cls"); cout<<"Computer: " << sc << " " << ":" << " "<< sh << " Spieler"<< endl; cout<<"\n\n\n\n"<<endl; cout<<"\t Bitte Wählen Sie aus : " << endl; cout<<"\t 1. Schere / 2. Stein 3. Papier" << endl; cin >> x; _sleep(2000); int y; srand ( time(NULL) ); do { y= rand() %3; } while ( y <== 0 && x == y); t=check(x,y); if (t == true) { sh=sh+1; count = count+1; } if (t == false) { sc=sc+1; count = count+1; } } if (sh > sc ) { gameend(true); } if ( sh < sc ) { gameend(false); } }
Auch mit dieser Variante selber Fehler
Wiso gibt es den Opperannten <== nicht bei einer while schlewife ? ich mein ich muss ja sagen können tue es so lange y ist kleiner gleich 0 oder ?
danke für die schnelle hilfe
-
Der Operand für "kleiner oder gleich" ist ein einfaches <=.
Ansonsten empfehle ich dir mal einen Blick in dein Lieblingsbuch zum Thema C/C++ (alternativ auch die MSDN oder www.cppreference.com) im Kapitel über Operatoren.
-
Der Operand für "kleiner oder gleich" ist ein einfaches <=
genau so ist es:
bei ner Zuweisung musst du nur 1 "="
bei nem vergleich sieht es so aus:
kleiner-gleich <=
gleich ==
größer-gleich >=