Unterschied zwischen = und == in C++
Was ist der unterschied zwischen = und == in C++ das kommt gerade ofter mal in den Bsp. bei meiem Leitfaden vor mit dem ich gerde "lerne".
Schon mal danke für alle Antworten. :)
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).
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. :)
int a = 49; (setzte varaible a auf den wert 49) a == 49 (vergleiche a mit 49)
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.
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.
int a = 0;
a == 2 // false
a == 0 // true
a = 49;
cout << a; // 49
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?!