Operatorpriorität für "" und "++" in VS2008 mit Optimierung

8

Ich stehe mit einem seltsamen VS2008 C ++ - Problem fest, das so aussieht, als ob die Priorität des Operators nicht respektiert wird.

Meine Frage ist, was ist die Ausgabe von diesem:

%Vor%

Normalerweise hat ++ Vorrang vor << , richtig? Oder wird der << als Funktionsaufruf betrachtet, der ihm einen höheren Vorrang einräumt als ++ ? Was ist die 100% richtige Standardantwort darauf?

Um dies zu überprüfen, habe ich ein neues leeres Projekt erstellt (VS2008 Konsolenanwendung), nur diesen Code in den Hauptordner eingefügt und hier sind die Ergebnisse:

%Vor%

Btw, das folgende Beispiel erzeugt genau die gleichen Ergebnisse:

%Vor%

Auch die Änderung der Art der Optimierung in der Version hat keine Auswirkungen, aber die Deaktivierung der Optimierung gibt "null 1" wie andere Konfigurationen aus.

    
Nicolas Rousseau-Dupuis 11.08.2010, 22:11
quelle

1 Antwort

16

Dies hat nichts mit der Priorität des Operators zu tun.
Sie verwenden & lt; & lt; Das ist syntaktischer Zucker für einen Funktionsaufruf:

%Vor%

Die einzige Regel hier ist, dass ein Parameter vollständig ausgewertet werden muss, bevor die Funktion aufgerufen wird. Es gibt keine Einschränkungen, in welcher Reihenfolge die Parameter ausgewertet werden oder ob ihre Auswertung mit Aufrufen verschachtelt (oder teilweise ausgewertet) wird.

Interpretation 1:

%Vor%

Interpretation 2:

%Vor%

Interpretation 3:

%Vor%

Interpretation 1 als Referenz betrachten:
Die Regeln, die angewendet werden müssen:

%Vor%     
Martin York 11.08.2010 22:29
quelle