Namensräume
Varianten
Aktionen

Order of evaluation

Aus cppreference.com
< cpp‎ | language

 
 
Sprache C + +
Allgemeine Themen
Original:
General topics
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Flusskontrolle
Original:
Flow control
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Bedingte Ausführung Aussagen
Original:
Conditional execution statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Iterationsanweisungen
Original:
Iteration statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Gehe Aussagen
Original:
Jump statements
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funktionen
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Funktion Erklärung
Lambda-Funktion Erklärung
Funktions-Template
inline-Spezifizierer
Exception-Spezifikationen (veraltet)
noexcept Spezifizierer (C++11)
Ausnahmen
Original:
Exceptions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Namespaces
Original:
Namespaces
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Types
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
decltype specifier (C++11)
Specifiers
Original:
Specifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
cv Planer
Lagerdauer Planer
constexpr Spezifizierer (C++11)
auto Spezifizierer (C++11)
alignas Spezifizierer (C++11)
Initialisierung
Original:
Initialization
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Literale
Original:
Literals
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Expressions
Original:
Expressions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Wertkategorien
Reihenfolge der Auswertung
alternative Darstellungen
Utilities
Original:
Utilities
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Types
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
typedef declaration
Typ Aliasdeklaration (C++11)
Attribute (C++11)
Wirft
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
impliziten Konvertierungen
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
C-Stil und funktionale Besetzung
Speicherzuweisung
Original:
Memory allocation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Classes
Original:
Classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Class-spezifische Funktion Eigenschaften
Original:
Class-specific function properties
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
explizit (C++11)
statisch
Besondere Member-Funktionen
Original:
Special member functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Templates
Original:
Templates
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Klassen-Template
Funktions-Template
Template-Spezialisierung
Parameter Packs (C++11)
Verschiedenes
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Inline Montage
 
Reihenfolge der Auswertung der Operanden eines C + +-Operator, einschließlich der Reihenfolge der Auswertung der Funktion Argumente in einem Funktionsaufruf Ausdruck, und die Reihenfolge der Auswertung der Teilausdrücke innerhalb eines Ausdrucks ist nicht spezifiziert (sofern nicht anders angegeben unten). Der Compiler wird sie in beliebiger Reihenfolge zu beurteilen und kann eine andere Reihenfolge wählen, wenn der gleiche Ausdruck erneut ausgewertet wird .
Original:
Order of evaluation of the operands of any C++ operator, including the order of evaluation of function arguments in a function-call expression, and the order of evaluation of the subexpressions within any expression is unspecified (except where noted below). The compiler will evaluate them in any order, and may choose another order when the same expression is evaluated again.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Es gibt kein Konzept von links nach rechts oder von rechts nach links Auswertung in C + +, was nicht mit von links nach rechts und von rechts nach links Assoziativität von Operatoren verwechselt werden: der Ausdruck a + b + c als (a + b) + c aufgrund analysiert nach links-nach-rechts-Assoziativität Operator +, aber die Teilausdruck c kann zuerst ausgewertet werden (oder letzte, bzw. gleichzeitig als a oder b) zur Laufzeit .
Original:
There is no concept of left-to-right or right-to-left evaluation in C++, which is not to be confused with left-to-right and right-to-left associativity of operators: the expression a + b + c is parsed as (a + b) + c due to left-to-right associativity of operator+, but the subexpression c may be evaluated first (or last, or at the same time as a or b) at run time.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

Inhaltsverzeichnis

[Bearbeiten] Sequenziert-before rulesNJ

[Bearbeiten] Definitionen

[Bearbeiten] Auswertungen

Es gibt zwei Arten von Auswertungen durch den Compiler für jeden Ausdruck oder Teilausdruck (beide optional sind) durchgeführt:
Original:
There are two kinds of evaluations performed by the compiler for each expression or subexpression (both of which are optional):
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Wert Berechnung: Berechnung des Wertes, der durch den Ausdruck zurückgegeben wird. Dies kann bedeuten, Bestimmung der Identität des Objektes (glvalue Auswertung, z. B. wenn der Ausdruck liefert eine Referenz auf einen Gegenstand) oder Lesen des Werts zuvor zu einem Objekt (prvalue Auswertung, z. B. wenn der Ausdruck eine Zahl oder einen anderen Wert zugewiesen )
    Original:
    value computation: calculation of the value that is returned by the expression. This may involve determination of the identity of the object (glvalue evaluation, e.g. if the expression returns a reference to some object) or reading the value previously assigned to an object (prvalue evaluation, e.g. if the expression returns a number, or some other value)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Nebenwirkungen: Zugriff (Lesen oder Schreiben) zu einem Objekt von einem flüchtigen glvalue, Modifikation (schriftlich) zu einem Objekt bezeichnet, ruft eine Bibliothek I / O-Funktion oder Aufruf einer Funktion, die jede dieser Operationen tut .
    Original:
    side effect: access (read or write) to an object designated by a volatile glvalue, modification (writing) to an object, calling a library I/O function, or calling a function that does any of those operations.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Bestellinformationen

"Sequenziert-before" ist eine asymmetrische, transitive, paarweise Beziehung zwischen Evaluierungen in dem selben Thread (es kann über Threads verlängern, wenn atomaren Typen mit geeigneten std::memory_order beteiligt sind) .
Original:
"sequenced-before" is an asymmetric, transitive, pair-wise relationship between evaluations within the same thread (it may extend across threads if atomic types are involved with suitable std::memory_order).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Wenn A vor B sequenziert ist, dann Auswertung der A wird abgeschlossen sein, bevor Auswertung der B beginnt .
    Original:
    If A is sequenced before B, then evaluation of A will be complete before evaluation of B begins.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Wenn A nicht sequenziert vor B und B vor A sequenziert ist, dann Auswertung von B wird abgeschlossen sein, bevor Auswertung der A beginnt .
    Original:
    If A is not sequenced before B and B is sequenced before A, then evaluation of B will be complete before evaluation of A begins.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Wenn A nicht sequenziert wird vor B und B ist vor A sequenziert, dann gibt es zwei Möglichkeiten:
    Original:
    If A is not sequenced before B and B is not sequenced before A, then two possibilities exist:
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • * Auswertungen von A und B sind nicht sequenzielle: sie können in beliebiger Reihenfolge durchgeführt werden und können sich überschneiden (innerhalb eines einzigen Ausführungsthread der Compiler kann die CPU-Befehlen, die A und B umfassen, zu verschachteln)
    Original:
    * evaluations of A and B are unsequenced: they may be performed in any order and may overlap (within a single thread of execution, the compiler may interleave the CPU instructions that comprise A and B)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • * Auswertungen von A und B sind-indeterminably sequenziert: sie können in beliebiger Reihenfolge durchgeführt werden, aber nicht überlappen: entweder A wird vor B abgeschlossen ist, oder B ist beendet, bevor A. Die Reihenfolge umgekehrt sein kann das nächste Mal das gleiche Ausdruck wird ausgewertet .
    Original:
    * evaluations of A and B are indeterminably-sequenced: they may be performed in any order but may not overlap: either A will be complete before B, or B will be complete before A. The order may be the opposite the next time the same expression is evaluated.
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Rules

1)
Jeder Wert Berechnung und Nebenwirkung einer vollen Ausdruck (ein Ausdruck, der nicht Teil eines anderen Ausdrucks, in der Regel ein, die mit einem Semikolon endet) wird vor jedem Wert Berechnung und Nebenwirkung der nächsten vollen Ausdruck sequenziert .
Original:
Each value computation and side effect of a full expression (an expression that is not part of another expression, typically one that ends with a semicolon) is sequenced before each value computation and side effect of the next full expression.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
2)
Die Berechnungen Wert (aber nicht die Nebenwirkungen) der Operanden jedem Bediener vor der Berechnung des Wertes Ergebnis des Operators (aber nicht seine Nebenwirkungen) sequenziert .
Original:
The value computations (but not the side-effects) of the operands to any operator are sequenced before the value computation of the result of the operator (but not its side-effects).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3)
Beim Aufruf einer Funktion (mit oder ohne die Funktion inline, und ob explizite Funktion Aufrufsyntax verwendet wird), jeden Wert Berechnung und Nebenwirkung von jedem Argument Expression assoziiert oder mit der Postfix-Ausdruck Bezeichnung der aufgerufenen Funktion, vor sequenziert Ausführung jeder Ausdruck oder Anweisung im Körper der aufgerufenen Funktion .
Original:
When calling a function (whether or not the function is inline, and whether or not explicit function call syntax is used), every value computation and side effect associated with any argument expression, or with the postfix expression designating the called function, is sequenced before execution of every expression or statement in the body of the called function.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
4)
Der Wert Berechnung der eingebauten Postinkrement und postdecrement Betreiber vor seiner Nebeneffekt sequenziert .
Original:
The value computation of the built-in postincrement and postdecrement operators is sequenced before its side-effect.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
5)
Der Nebeneffekt der integrierten Prä-Inkrement und predecrement Operatoren wird, bevor ihr Wert Berechnung (impliziten Regel durch Definition wie Verbundzuweisung) sequenziert
Original:
The side effect of the built-in preincrement and predecrement operators is sequenced before its value computation (implicit rule due to definition as compound assignment)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
6)
Jeder Wert Berechnung und Nebenwirkung der ersten (linken) Argument der eingebauten logische UND-Operator && und der integrierten logischen OR-Operator
Original:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Jeder Wert Berechnung und Nebenwirkungen mit dem ersten Ausdruck in der logischen verbunden:? Operator wird sequenziert, bevor jeder Wert-Berechnung und Nebenwirkung von der zweiten oder dritten Expression assoziiert .
Original:
Every value computation and side effect associated with the first expression in the logical :? operator is sequenced before every value computation and side effect associated with the second or third expression.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
8)
Der Nebeneffekt (Änderung der linke Argument) des eingebauten Zuweisungsoperator und alle eingebauten Verbindung Zuweisungsoperatoren wird nach dem Wert-Berechnung (nicht aber die Nebenwirkungen) links und rechts Argumente sequenziert, und wird vor sequenziert Berechnung der Wert des Zuweisungsausdrucks (das heißt, bevor die Referenz auf das Objekt modifiziert)
Original:
The side effect (modification of the left argument) of the built-in assignment operator and of all built-in compound assignment operators is sequenced after the value computation (but not the side effects) of both left and right arguments, and is sequenced before the value computation of the assignment expression (that is, before returning the reference to the modified object)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
9)
Jeder Wert Berechnung und Nebenwirkung der ersten (linken) Argument der eingebauten Komma-Operator wird vor jedem Wert Berechnung und Nebenwirkung der zweiten (rechten) Argument sequenziert .
Original:
Every value computation and side effect of the first (left) argument of the built-in comma operator is sequenced before every value computation and side effect of the second (right) argument.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
10)
In list-Initialisierung wird jeder Wert-Berechnung und Nebenwirkung von einer bestimmten Initialisierung Klausel sequenziert vor jeder Wert-Berechnung und Nebenwirkung bei jedem initializer Klausel, die es folgt in der durch Kommata getrennte Liste der Initialisierung Liste zugeordnet .
Original:
In list-Initialisierung, every value computation and side effect of a given initializer clause is sequenced before every value computation and side effect associated with any initializer clause that follows it in the comma-separated list of the initializer list.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
11)
Ein Funktionsaufruf, die nicht vor oder sequenziert wird sequenziert nach einem weiteren Funktionsaufruf unbestimmt sequenziert (muss das Programm verhalten as if die CPU-Anweisungen, die verschiedene Funktionsaufrufe nicht verschachtelt wurden sein, selbst wenn die Funktionen wurden inline)
Original:
A function call that is not sequenced before or sequenced after another function call is indeterminately sequenced (the program must behave as if the CPU instructions that constitute different function calls were not interleaved, even if the functions were inlined)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
12)
Der Aufruf der Zuweisung Funktion (Operator new) ist unbestimmt in Bezug auf die Auswertung der Konstruktorargumente in einem neuen Ausdruck sequenziert
Original:
The call to the allocation function (operator new) is indeterminately sequenced with respect to the evaluation of the constructor arguments in a new-expression
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Undefiniertem Verhalten

1)
Wenn eine Nebenwirkung auf einem skalaren Objekts relativ zu einer anderen Seite Kraft am selben Objekt skalaren unsequenced wird, ist das Verhalten undefiniert .
Original:
If a side effect on a scalar object is unsequenced relative to another side effect on the same scalar object, the behavior is undefined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

i = ++i + i++; // undefined behavior
i = i++ + 1; // undefined behavior (but i = ++i + 1; is well-defined)
f(++i, ++i); // undefined behavior
f(i = -1, i = -1); // undefined behavior

2)
Wenn eine Nebenwirkung auf einem skalaren Objekts relativ zu einem Wert-Berechnung unter Verwendung des Wertes des gleichen Objekts skalaren unsequenced wird, ist das Verhalten undefiniert .
Original:
If a side effect on a scalar object is unsequenced relative to a value computation using the value of the same scalar object, the behavior is undefined.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

cout << i << i++; // undefined behavior
a[i] = i++; // undefined bevahior

[Bearbeiten] Sequence Punkt rulesNJ

[Bearbeiten] Definitionen

Auswertung eines Ausdrucks könnte zu Nebenwirkungen, die da sind: Zugriff auf ein Objekt durch einen flüchtigen lvalue bezeichnet, ein Objekt verändert, ruft eine Bibliothek I / O-Funktion oder Aufruf einer Funktion, die jede dieser Operationen tut .
Original:
Evaluation of an expression might produce side effects, which are: accessing an object designated by a volatile lvalue, modifying an object, calling a library I/O function, or calling a function that does any of those operations.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
A Sequenzpunkt ist ein Punkt im Ablauf, wo alle Nebenwirkungen von den bisherigen Auswertungen in der Folge vollständig sind und keine Nebenwirkungen der anschließenden Auswertungen begonnen .
Original:
A sequence point is a point in the execution sequence where all side effects from the previous evaluations in the sequence are complete, and no side effects of the subsequent evaluations started.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[Bearbeiten] Rules

1)
Es ist eine Sequenz an das Ende eines jeden vollen Ausdruck (typischerweise am Semikolon)
Original:
There is a sequence point at the end of each full expression (typically, at the semicolon)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
2)
Beim Aufruf einer Funktion (mit oder ohne die Funktion inline und ob Funktionsaufrufen verwendet wurde), gibt es eine Sequenz Punkt nach der Auswertung aller Funktionsargumente (falls vorhanden), die stattfindet, bevor Ausführung von Ausdrücken oder Erklärungen in die Funktion Körper
Original:
When calling a function (whether or not the function is inline and whether or not function call syntax was used), there is a sequence point after the evaluation of all function arguments (if any) which takes place before execution of any expressions or statements in the function body
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3)
Es gibt eine Folge Punkt nach dem Kopieren eines zurückgegebenen Wert einer Funktion und vor der Ausführung von Ausdrücken außerhalb der Funktion .
Original:
There is a sequence point after the copying of a returned value of a function and before the execution of any expressions outside the function.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
4)
Sobald die Ausführung einer Funktion beginnt, werden keine Ausdrücke aus der aufrufenden Funktion ausgewertet, bis der Ausführung der aufgerufenen Funktion abgeschlossen ist (Funktionen können nicht verschachtelt werden)
Original:
Once the execution of a function begins, no expressions from the calling function are evaluated until execution of the called function has completed (functions cannot be interleaved)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
5)
Bei der Auswertung der jede der folgenden vier Ausdrücke, mit den eingebauten (nicht überlasteten) die Betreiber, gibt es eine Sequenz Punkt nach der Auswertung des Ausdrucks a .
Original:
In the evaluation of each of the following four expressions, using the built-in (non-overloaded) operators, there is a sequence point after the evaluation of the expression a.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

a && b
a || b
a ? b : c
a , b

[Bearbeiten] Undefiniertem Verhalten

1)
Zwischen dem vorherigen und nächsten Sequenz Punkt ein skalares Objekt hat seinen gespeicherten Wert modifiziert höchstens einmal durch die Auswertung eines Ausdrucks .
Original:
Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

i = ++i + i++; // undefined behavior
i = i++ + 1; // undefined behavior
i = ++i + 1; // undefined behavior (well-defined in C++11)
++ ++i; // undefined behavior (well-defined in C++11)
f(++i, ++i); // undefined behavior
f(i = -1, i = -1); // undefined behavior

2)
Zwischen dem vorherigen und nächsten Sequenz Punkt, der vor Wertes eines skalaren Objekt, das durch die Auswertung der Expression modifiziert wird, so wird nur zugegriffen, um den Wert zu bestimmen, gespeichert werden kann .
Original:
Between the previous and next sequence point , the prior value of a scalar object that is modified by the evaluation of the expression, shall be accessed only to determine the value to be stored.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

cout << i << i++; // undefined behavior
a[i] = i++; // undefined bevahior

[Bearbeiten] Siehe auch