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 >=


Anmelden zum Antworten