PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++]Komma-operator in einer if-Bedingung


Gast
2009-03-19, 09:28:28
Wir programmieren in der Schule etwas auf unterstem Niveu herum und natürlich musste jemandem was blödes einfallen. Statt


if (i>34 && i<56) ...


schrieb er


if (i>34 , i<56) ...


und es funktionierte genauso. Die Frage ist nun, warum kann ich den &&-Operator mit dem Komma-Operator ersetzen? Das ganze lief in Visual Studio

Gohan
2009-03-19, 09:39:32
Es wird ja nichts anderes getan als den Bereich, in dem die Bedingung stattfinden soll, einzugrenzen. Die Schleife fragt erst, ob i > 32 ist, dann, ob i < 52 ist. Geht doch ganz gut auf :)

Gast
2009-03-19, 10:34:30
@Threadstarter:
Ganz falsch beobachtet.

@yan.kun0567:
Wenn man es selbst nicht weiß, sollte man solche Dinge nicht beantworten, vor allem nicht so falsch. Außerdem ist es keine Schleife, sondern eine Bedingung.


Korrekte Lösung:
Der Komma-Operator dient u.a. dazu, mehrere Anweisungen zu separieren. An Stellen, in denen man keine {} benutzen kann (z.B. in den diversen Teilen einer for-Schlaufe) kann das sehr nützlich sein. Das Ergebnis eines Ausdrucks, der mit Kommas in Teilausdrücke unterteilt wurde, ist das Ergebnis des letzten Teilausdrucks, die Ergebnisse der anderen Teilausdrücke werden verworfen.

if (i>34 , i<56) ...

ist äquivalent zu

if (i<56) ...

Senior Sanchez
2009-03-19, 11:43:40
Ah, cool, habe ich auch noch nicht gewusst. :)

Es sollte also auch bei i <= 34 ausgeführt werden, hab jetzt aber keine Lust das zu testen. *g*
Aber das wird schon stimmen.

Gast
2009-03-19, 11:53:58
Danke, so wars. Er hatte vergessen nen Wert von kleiner 35 zu testen

Gohan
2009-03-19, 17:53:15
@yan.kun0567:
Wenn man es selbst nicht weiß, sollte man solche Dinge nicht beantworten, vor allem nicht so falsch. Außerdem ist es keine Schleife, sondern eine Bedingung.

Ja, sry. Das es eine Bedingung ist, ist mir natürlich klar. War bloß zu früh am morgen :D