Espacios de nombres
Variantes
Acciones

Order of evaluation

De cppreference.com
< cpp‎ | language

 
 
Lenguaje C++
Los temas generales
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.
Control de flujo
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.
Sentencias condicionales ejecución
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.
Instrucciones de iteración
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.
Ir declaraciones
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.
Funciones
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
declaración de la función
lambda declaración de la función
función de plantilla
especificador inline
especificaciones de excepción (obsoleto)
noexcept especificador (C++11)
Excepciones
Original:
Exceptions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Los espacios de nombres
Original:
Namespaces
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipos
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)
Los especificadores
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 especificadores
almacenamiento duración especificadores
constexpr especificador (C++11)
auto especificador (C++11)
alignas especificador (C++11)
Inicialización
Original:
Initialization
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Los literales
Original:
Literals
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Expresiones
Original:
Expressions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
categorías de valor
orden de evaluación
representaciones alternativas
Utilidades
Original:
Utilities
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Tipos
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
alias de tipo de declaración (C++11)
atributos (C++11)
Lanza
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
conversiones implícitas
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
C-cast estilo y funcional
De asignación de memoria
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.
Clases
Original:
Classes
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Clase propiedades específicas de la función
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.
Funciones especiales miembro
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.
Plantillas
Original:
Templates
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
clase de plantilla
función de plantilla
plantilla de especialización
paquetes de parámetros (C++11)
Varios
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Montaje en línea
 
Orden de evaluación de los operandos de cualquier operador de C + +, incluyendo el orden de evaluación de los argumentos de la función en una expresión de función de guardia, y el orden de evaluación de las subexpresiones dentro de cualquier expresión es especificar (salvo cuando se indica más abajo). El compilador de evaluarlos en cualquier orden, y puede elegir otro orden cuando la misma expresión se evalúa de nuevo .
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.
No existe el concepto de izquierda a derecha o de derecha a izquierda-evaluación en C + +, que no debe ser confundido con izquierda a derecha y de derecha a izquierda, la asociatividad de los operadores: el a + b + c expresión se analiza como (a + b) + c debido a de izquierda a derecha de la asociatividad + operador, pero el c subexpresión puede ser evaluado primera (o última, o al mismo tiempo como a o b) en tiempo de ejecución .
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.

Contenido

[editar] Secuenciado-antes rulesNJ

[editar] Definiciones

[editar] Evaluaciones

Hay dos tipos de evaluaciones realizadas por el compilador para cada expresión o subexpresión (ambos de los cuales son opcionales):
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.
  • Valor' cálculo: cálculo del valor devuelto por la expresión. Esto puede implicar la determinación de la identidad del objeto (glvalue evaluación, por ejemplo, si la expresión devuelve una referencia a un objeto) o leer el valor asignado previamente a un objeto (evaluación prvalue, por ejemplo, si la expresión devuelve un número, o algún otro valor )
    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.
  • Lado' efecto: el acceso (lectura o escritura) a un objeto designado por una volátil glvalue, modificación (por escrito) a un objeto, llamar a una biblioteca de E / S de la función, o llamar a una función que hace alguna de esas operaciones .
    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.

[editar] Orden

"Secuencia-antes" es una asimétrica, transitiva por pares, la relación entre las evaluaciones en el mismo hilo (puede extenderse a través de las discusiones si los tipos atómicos están involucrados con std::memory_order adecuado) .
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.
  • Si A es secuenciado antes que B, entonces la evaluación de A se completará antes de la evaluación de B comienza .
    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.
  • Si A no es secuenciado antes de que B y B es secuenciado antes de que A, entonces la evaluación de B se completará antes de la evaluación de A comienza .
    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.
  • Si A no es secuenciado antes de que B y B no es secuenciado antes de A, entonces existen dos posibilidades:
    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.
  • * Evaluaciones de A y B están sin secuencia: se pueden realizar en cualquier orden y pueden solaparse (dentro de un solo hilo de ejecución, el compilador puede intercalar las instrucciones de la CPU que comprenden A y B)
    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.
  • * Evaluaciones de A y B son indeterminably-secuenciados: se puede realizar en cualquier orden, pero no pueden superponerse: ya sea A será completa antes de B, o B se completa antes de A. El orden puede ser el contrario la próxima vez que el mismo Se evalúa la expresión .
    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.

[editar] Reglas

1)
Cada cálculo de valor y efectos secundarios de la plena expresión (expresión que no es parte de otra expresión, típicamente uno que termina con un punto y coma) es secuenciado antes de cada cálculo de valor y los efectos secundarios de la plena expresión siguiente .
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)
Los cálculos de valor (pero no los efectos secundarios-) de los operandos a cualquier operador se secuenciaron antes del cómputo del valor del resultado del operador (pero no sus efectos secundarios) .
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)
Cuando se llama a una función (si la función está en línea, y si es o no la sintaxis explícita llamada a la función se utiliza), todos los cálculos el valor y los efectos secundarios asociados con cualquier expresión del argumento, o con la expresión sufijo que designa la función llamada, se secuencia antes ejecución de cada expresión o declaración en el cuerpo de la función llamada .
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)
El cálculo del valor de los operadores integrados postincremento y postdecrement es secuenciado antes de su efecto secundario .
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)
El efecto secundario de la incorporada en el preincremento y operadores predecrement es secuenciado antes de su cálculo de valor (regla implícita debido a la definición como asignación compuesta)
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)
Todos los valores de cálculo y efectos secundarios de la primera (izquierda) argumento de la incorporada en el operador lógico AND && y la incorporada en el operador lógico OR
Original:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Cada cálculo de valor y efecto secundario asociado con la primera expresión de la lógica:? operador se secuencia antes de cada cálculo de valor y efecto secundario asociado con la expresión o segundo tercio .
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)
El efecto secundario (modificación del argumento de la izquierda) del operador de asignación integrada y de todos los incorporados en operadores de asignación compuestos se secuencia después de que el cálculo del valor (pero no los efectos secundarios) de los argumentos de los canales izquierdo y derecho, y se secuenció antes el cálculo del valor de la expresión de asignación (es decir, antes de devolver la referencia al objeto modificado)
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)
Cada cálculo de valor y los efectos secundarios de la primera (izquierda) argumento del operador coma incorporado es secuenciado antes de cada cálculo de valor y los efectos secundarios de la segunda (derecha) argumento .
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)
En lista de inicialización, todo efecto y valor cómputo lado de una cláusula inicializador dado es secuenciado antes de cada cálculo de valor y los efectos secundarios asociados con cualquier cláusula de inicialización que le sigue en la lista separada por comas de la lista de inicialización .
Original:
In lista de inicialización, 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)
Una llamada de función que no se secuencia antes o después de secuenciado otra llamada de función indeterminada se secuenciaron (el programa debe comportarse as if las instrucciones de la CPU que constituyen las diferentes llamadas de función no fueron intercalados, incluso si las funciones se 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)
La llamada a la función de asignación (operador new) se secuenció indeterminada con respecto a la evaluación de los argumentos del constructor de una nueva expresión
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.

[editar] Comportamiento indefinido

1)
Si un efecto secundario en un objeto de escalar es sin secuencia con relación a otro efecto secundario en el objeto de escalar mismo, el comportamiento es indefinido .
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)
Si un efecto secundario en un objeto de escalar es sin secuencia relativa a un cálculo de valor usando el valor del objeto de escalar mismo, el comportamiento es indefinido .
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

[editar] Secuencia rulesNJ punto

[editar] Definiciones

Evaluación de una expresión podría producir efectos secundarios, que son: acceso a un objeto designado por un valor-i volátil, modificar un objeto, llamando a una biblioteca de E / S de la función, o llamando a una función que hace ninguna de estas operaciones .
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.
Una secuencia' punto es un punto en la secuencia de ejecución en la que todos los efectos secundarios de las evaluaciones anteriores de la secuencia se completa, y comenzó a ningún efecto secundario de las evaluaciones posteriores .
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.

[editar] Reglas

1)
Hay un punto de la secuencia en el extremo de cada expresión completa (típicamente, en el punto y coma)
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)
Cuando se llama a una función (si la función está en línea y si la sintaxis de la función de llamada se utiliza), hay un punto de secuencia después de la evaluación de todos los argumentos de la función (si los hay) que tiene lugar antes de la ejecución de las expresiones o declaraciones en el cuerpo de la función
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)
Hay un punto de secuencia después de la copia de un valor devuelto de una función y antes de la ejecución de cualquier expresión fuera de la función .
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)
Una vez que la ejecución de una función comienza, sin expresiones de la función de llamada se evalúan hasta que la ejecución de la función de llamada se ha completado (funciones no pueden ser intercaladas)
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)
En la evaluación de cada uno de los siguientes cuatro expresiones, utilizando el built-in (no sobrecargado) los operadores, hay un punto en secuencia después de la evaluación de la expresión 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

[editar] Comportamiento indefinido

1)
Entre el punto de secuencia anterior y el siguiente un objeto escalar tendrá su valor almacenado modificado como máximo una vez por la evaluación de una expresión .
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)
Entre el punto de secuencia anterior y el siguiente, el valor previo de un objeto escalar que es modificada por la evaluación de la expresión, se puede acceder sólo para determinar el valor a almacenar .
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

[editar] Ver también