C / C ++ Syntax - Trennung von Anweisungen mit anstatt von; legal?

7

Ich bin gerade in diesen Code gekommen, der das tut:

%Vor%

Es kompiliert und läuft gut. Aber soll das nicht sein:

%Vor%

Warum werden in diesem Fall Anweisungen getrennt verwendet?

Danke:)

    
Anonymous 16.11.2011, 09:46
quelle

5 Antworten

6

Dies ist der Komma-Operator. Es wertet beide Argumente aus und gibt das zweite zurück.

    
Björn Pollex 16.11.2011, 09:49
quelle
7

In C und C ++ sind die meisten "Anweisungen" eigentlich Ausdrücke. Das einem Ausdruck hinzugefügte Semikolon macht es zu einer Aussage. Alternativ ist es erlaubt (aber fast immer schlechten Stil), side-effectful Ausdrücke mit dem Komma-Operator zu trennen: der linksseitige Ausdruck wird auf seine Nebenwirkungen ausgewertet (und sein Wert wird verworfen), und die rechte Seite Der side-Ausdruck wird auf seinen Wert hin ausgewertet.

    
ibid 16.11.2011 09:52
quelle
5

Dies ist der Komma-Operator. Es kann verwendet werden, um Ausdrücke zu trennen, aber keine Deklarationen.

    
Mankarse 16.11.2011 09:50
quelle
5

Das ist Kommaoperator . MSDN Artikel ist hier . Und werfen Sie einen Blick auf diese Frage, um zu verstehen, wie es funktioniert.

    
Bojan Komazec 16.11.2011 09:52
quelle
1

Obwohl es möglich ist, Code so zu schreiben, kann es etwas seltsam sein. Ein etwas realistischerer Anwendungsfall wäre, wenn Sie eine Struktur T wie folgt haben:

%Vor%

Nun möchten Sie alles in der Struktur durchlaufen und eine Überprüfung durchführen und dann fix aufrufen, wenn check false zurückgibt. Der einfache Weg dazu wäre

%Vor%

Lassen Sie uns so tun, als wollten Sie es so kurz wie möglich schreiben. fix() zurückgeben bedeutet, dass Sie es nicht einfach in den Zustand versetzen können. Mit dem Komma-Operator umgehen Sie dies jedoch:

%Vor%

Ich würde es nicht ohne einen besonders guten Grund verwenden, aber es erlaubt Ihnen, jede Funktion von einer Bedingung aus aufzurufen, die bequem sein kann.

    
Anton Golov 16.11.2011 11:35
quelle

Tags und Links