Diese Kombination ist ein wenig kompliziert, weil sie einen Kommaoperator mit der Bedingung kombiniert Ausdruck. Es analysiert wie folgt:
a < b
ist die Bedingung, a = b, 1
ist der Ausdruck "when true" 0
ist der Ausdruck "when false" Das Ergebnis des Komma-Operators ist seine letzte Komponente, d.h. 1
. Das Ziel der Verwendung des Komma-Operators ist in erster Linie, den Nebeneffekt des Zuweisens von b
zu a
zu verursachen.
a < b ? a = b, 1 : 0
wird als (a < b) ? (a = b, 1) : 0
analysiert, ein normaler Bedingungsoperator. Wenn a < b
wahr ist, wird a = b, 1
ausgewertet, indem b
auf a
und dann "returning" 1 zugewiesen wird. Der Nettoeffekt von cx(a,b)
besteht also darin, den größeren Wert a
zuzuordnen und 1 zurückzugeben wenn a
geändert wurde, andernfalls 0.
Tags und Links c++ conditional-statements