Unterschied zwischen = und == in C++

4 Antworten

Das ist in tausenden Lehrbüchern bei Amazon und in den Artikeln zu Sprachen wie Java, C, C++, Objective-C, C# usw. in der Wikipedia, Videos und PDFs mehr als ausreichend erläutert.

= ist der Zuweisungsoperator und == ist ein Vergleichsoperator.

beispiel = 4711 weist der Variablen „beispiel“ den Integerwert 4711 zu.

beispiel == gut vergleicht die Variable „beispiel“ mit der Variablen „gut“. Sind deren Werte oder Inhalte exakt gleich, ist der Vergleich wahr; ansonsten ist er falsch.

Es gibt weitere Zuweisungsoperatoren: +=, –=, *= und /= und weitere Vergleichsoperatoren: !=, >=, >, <, <=, <> …

= ist eine Zuweisung. Also a = 2 --> a bekommt den Wert 2.

Der Operator b==c ist ein Vergleichsoperator und liefert entweder falsch (0) oder wahr zurück. Wenn b gleich groß wie c ist, dann kommt wahr zurück ansonsten falsch (0). Von diesen Vergleichsoperatoren gibt es noch mehr (!= ungleich, < kleiner, <= kleidergleich, > größer und >= größer gleich).

TeeTier  01.05.2015, 10:44

Naja, genau genommen handelt es sich bei "=" um zwei verschiedene Operatoren, die - je nach Kontext - völlig anders funktionieren.

int x = 1; /* Initialisierung */

x = 1; /* Zuweisung */

Aber das dürfte für Anfänger vermutlich nebensächlich sein und ist nur für Compilerbauer interessant. :)

1

int a = 49; (setzte varaible a auf den wert 49) a == 49 (vergleiche a mit 49)

Programm11807 
Fragesteller
 01.05.2015, 00:44

Also bei int a = 49 würde wenn ich

cout << a << endl; eingebe in der Console 49 raus und wenn ich bei der 2 Variante a == 49 eingebe was kommt dann bei

cout << a << endl; raus oder geht das gar nicht?!

0
EightSix  01.05.2015, 01:06
@Programm11807

Bei der Konsole 0 weil ja a nix zugewiesen wird.

Bei a== 49 kommt true (bool) raus

0
martin7812  01.05.2015, 06:55
@Programm11807

Ein Beispiel:

a = 6;
a == 46;
cout << a << endl;
if(a = 7)
{
cout << "ist 7" << endl;
}
if(a == 6)
{
cout << "ist 6" << endl;
}
if(a == 7)
{
cout << "ist wieder 7" << endl;
}

Die Ausgabe wäre dann folgende:

6
ist 7
ist wieder 7

Warum?

Die Zeile "a==46" hat ungefähr die selbe Auswirkung wie die Zeile "a+10" - es würde zwar eine Berechnung gemacht werden, aber das Ergebnis nicht weiter verwendet (zu Deutsch: die Zeile ist unsinnig, aber korrekt).

Das Ergebnis einer Zuweisung ("a=7") ist immer der Wert der Zuweisung selbst. Das bedeutet: Beim Berechnen von "b=(a=7)+4;" würde der Variable "a" der Wert 7 zugewiesen werden und das Gesamtergebnis wäre b=11 (also 7+4). Ein "if" wird ausgeführt, wenn die Zahl ungleich null ist; da 7 ungleich null ist, wird ein "if(7)" also ausgeführt.

Da der Variablen "a" der Wert 7 zugewiesen wurde, schlägt der Vergleich "a==6" jetzt fehl und "a==7" funktioniert.

0
Programm11807 
Fragesteller
 01.05.2015, 13:17
@martin7812

Okay soweit hab ich das jetzt einigermaßen verstanden ;) aber wie stell ich == in dem neuen C++11 Standard dar ich weis das man bei einer Zuweisung also = auch a { 7 } schreiben kann und wie geht das dann bei == ? 

Danke schon mal wieder im voraus für alle weiteren Antworten. 

0

int a = 0;

a == 2 // false

a == 0 // true

a = 49;

cout << a; // 49