C++ Unterschied Zuweisungs-/Vergleichsoperatoren

estre

Commander
Registriert
Dez. 2005
Beiträge
3.006
Hallo zusammen,

kann mir bitte jemand plausibel erklären was der Unterschied zwischen Vergleichs- und Zuweisungsoperatoren ist ?

Vorallem verstehe ich folgende Syntax nicht:

char buchstabe
if (buchstabe=='j')
(....)


wozu muss hier das j in Hochkommas stehen ?

Vielen Dank für eure Hilfe!
 
Zuweisungsoperator wäre beispielsweise das '='-Zeichen, ein Vergleichsoperator ist beispielsweise '=='.
Da du wie im echten Leben keine Äpfel mit Birnen vergleichen, sondern immer nur Objekte des selben Types musst du, da "buchstabe" ein Char ist, diesen mit einem anderen Char vergleichen. Also muss 'j' auch ein Char sein. Dies wird in C durch einfache Anführungszeichen ausgedrückt.
 
Es soll verglichen werden, ob Buchstabe ein J ist.
Man könnte das J auch ohne '' schreiben, wenn da nicht das Problem wäre, dass es zum Beispiel eine andere Variable im Programm gibt, die ebenfalls J heißt.

Nun wüsste der PC nicht was zu machen ist,
soll er nun überprüfen ob Buchstabe='J' ist
ODER ob Buchstabe = J (J='g') ist.


Daher sind Computer dumm, sie können nichts selbst machen, sie müssen immer haargenau gesagt bekommen was zu tun ist. Sobald etwas zweideutig ist, hören sie mit der Arbeit auf oder geben evtl falsche Ergebnisse aus.
 
Hallo,

Zuweisungsoperatoren weisen einer Variable einen Wert zu

Bsp.
x = 8 => danach hat x einen Wert von 8
x = 9 => danach hat x einen Wert von 9

Vergleichoperatoren prüfen ob eine Variable einen bestimmten Wert hat

Bsp.
x == 8 => ist falsch (false) da x 9 ist
x == 9 => ist richtig (true)

ok?
 
super Erklärung @ _killy_ jetzt habe ich es gecheckt :)

Das heißt also, dass man für Bedingungen immer Vergleichsoperatoren nimmt, weil diese entweder wahr oder falsch sind ?!
Also muss 'j' auch ein Char sein. Dies wird in C durch einfache Anführungszeichen ausgedrückt

Diese Aussage verstehe ich nicht, ,,j'' ist doch ein char oder nicht ?!
 
Zuletzt bearbeitet:
Wenn du z.b. einen Quellcode hast wie den hier:

Code:
int j = 3;
char buchstabe;

[...]

if (buchstabe == j) {
   [...]
}

würde er prüfen ob der Wert der in "buchstabe" gespeichert ist, dem wert aus der Variablen j entspricht. Das kann durchaus true ergeben, da der Wert bei einem char auch nur in einzelnen Bits gespeichert wird und diese Bitfolge durchaus gleich der Bitfolge des Integers sein kann.

Wenn die If-Verzweigung hingegen so aussieht:

Code:
if (buchstabe == 'j')

würde er prüfen ob der Wert, der in "buchstabe" gespeichert ist ein 'j' ist.
 
Zurück
Oben