Fehlermeldung Operanden
-
Hallo zusammen,
Hatte vor einiger Zeit mal Mit C++ unter MS Visual c++ 2005 angefangen und dann wieder aufgehört. Möchte nun aber wieder anfangen. Damals hatte ich ein 32Bit-Betriebssystem, heute ein 64Bit-Betriebssystem. Ich arbeite nun mit dem MS Visual C++ 2010 Express.
Nun zu der Fehlermeldung (keine ahnung ob es am wechsel der betriebssysteme liegt).
Hier mal was in meiner Headerdatei steht. (Achja bin Anfänger, ich hoffe ich bin zumindest im richtigen Forum unterwegs).#include "stdafx.h" #include <iostream> using namespace std;Ich möchte im Prinzip nur einen Operanden aus einem Tutorial ausprobieren. (+=)
weiter geht es so:
int main () { int x = 15 ; cout << x += 2 ; getchar(); return 0; }Der Fehler tritt beim += auf. Fahre ich mit der Maus drüber, steht dort: Kein "+="-Operator stimmt mit diesen Operanden überein.
Fehlermeldung unten: error C2676: Binärer Operator '+=': 'std::basic_ostream<_Elem,_Traits>' definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht
Hab schon Google bis zum erbrechen ausgequetscht, aber nichts gefunden, bzw wenn, nicht wirklich verstanden. Weiss nun nicht obs am 64Bit-Betriebssystem liegt oder an etwas anderem. Den Fehler hatte ich beim MS Visual C++ 2005 nicht.
Hoffe ihr könnt mir weiterhelfen.
Danke schonmal.
Gruß
-
Das kann nicht gehen. << bindet enger als Operand als +=
Was Du also ausführst ist das:(cout << x) += 2;Das geht natürlich:
cout << (x += 2);Schau Dir mal die Operator-Precedence an

-
Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
byaios schrieb:
(keine ahnung ob es am wechsel der betriebssysteme liegt).
Höchstwahrscheinlich nicht. Die Compiler sind allesamt 32bit-Programme, auch auf 64bit-Systemen. Sie übersetzen auch nur 32bit-Programme, es sei denn du hast das WinSDK7.1 installiert und gibst explizit den entsprechenden Compiler an.
Ich möchte im Prinzip nur einen Operanden aus einem Tutorial ausprobieren. (+=)
+= ist ein Operator. Operanden sind die Ausdrücke links und rechts davon
Klingt jetzt nach Haarspalterei, aber solche Unterscheidungen können wichtig sein - die falschen Ausdrücke können Verständnis extrem erschweren oder unmöglich machem.Zu alledem kommt, dass der Ausdruck, den du da schreibst, umständlich zu lesen ist. Du machst zwei völlig unterschiedliche Dinge in der selben Anwesiung: Addition und Ausgabe von x. Lesbarer und völlig problemlos (und nicht langamer) wäre folgendes:
x += 2; cout << x;
-
pumuckl schrieb:
byaios schrieb:
(keine ahnung ob es am wechsel der betriebssysteme liegt).
Höchstwahrscheinlich nicht. Die Compiler sind allesamt 32bit-Programme, auch auf 64bit-Systemen. Sie übersetzen auch nur 32bit-Programme, es sei denn du hast das WinSDK7.1 installiert und gibst explizit den entsprechenden Compiler an.
Ich möchte im Prinzip nur einen Operanden aus einem Tutorial ausprobieren. (+=)
+= ist ein Operator. Operanden sind die Ausdrücke links und rechts davon
Klingt jetzt nach Haarspalterei, aber solche Unterscheidungen können wichtig sein - die falschen Ausdrücke können Verständnis extrem erschweren oder unmöglich machem.Alles klar, werde ich mir merken.
Zu alledem kommt, dass der Ausdruck, den du da schreibst, umständlich zu lesen ist. Du machst zwei völlig unterschiedliche Dinge in der selben Anwesiung: Addition und Ausgabe von x. Lesbarer und völlig problemlos (und nicht langamer) wäre folgendes:
x += 2; cout << x;Stimmt, damit klappts wunderbar. Ich danke euch

Gruß