Was macht das? Operator in C ++ tun? [Duplikat]

8

Betrachten Sie diese Funktion

%Vor%

Kann mir jemand erklären, was genau das macht? Es scheint sich vom typischen condition ? true : false Format zu unterscheiden.

    
Aruka J 24.07.2015, 16:49
quelle

6 Antworten

9

Wir könnten es deutlicher machen:

%Vor%

Das geklammerte Bit bedeutet "Weisen Sie b zu a zu, dann verwenden Sie 1 als unseren Wert".

bedeutet in C und C ++ generell "alle diese Werte auswerten, aber die letzte als Wert des Ausdrucks verwenden".

    
Paul Roub 24.07.2015, 16:52
quelle
4

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.

    
dasblinkenlight 24.07.2015 16:53
quelle
3

Sie können mehrere Ausdrücke mit ,

ausführen

In diesem Fall, wenn ein & lt; b, dann b zu a zuweisen und 1 zurückgeben. Gemäß C ++ - Grammatik:

%Vor%

wo

%Vor%     
Alex 24.07.2015 16:55
quelle
3

Der Operator , berechnet nur alle Ausdrücke von links nach rechts und berechnet den Wert des Ausdrucks ganz rechts.

Ihr Code ist der gleiche wie ...

%Vor%     
QuestionC 24.07.2015 16:53
quelle
1

Lesen Sie es als:

%Vor%     
unxnut 24.07.2015 16:53
quelle
0

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.

    
jwodder 24.07.2015 16:53
quelle

Tags und Links