Espacios de nombres
Variantes
Acciones

Order of evaluation

De cppreference.com
< c‎ | 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.
Preprocessor
Comentarios
Palabras clave
Tabla ASCII
Las secuencias de escape
Historia de C
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
especificador inline
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.
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
especificadores de clase de almacenamiento
alignas especificador (C99)
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.
orden de evaluación
los operadores alternativos
los operadores
prioridad de los operadores
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.
typedef declaration
atributos (C99)
proyecta
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 un operador 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] 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 (lvalue evaluación) o leer el valor asignado previamente a un objeto (evaluación rvalue)
    Original:
    value computation: calculation of the value that is returned by the expression. This may involve determination of the identity of the object (lvalue evaluation) or reading the value previously assigned to an object (rvalue evaluation)
    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, modificando un archivo, modificar el entorno de coma flotante (si es compatible), o llamar a una función que hace ninguna de estas operaciones .
    Original:
    side effect: access (read or write) to an object designated by a volatile glvalue, modification (writing) to an object, modifying a file, modifying the floating-point environment (if supported), 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.
Si no hay efectos secundarios se producen por una expresión y el compilador puede determinar que el valor no se utiliza, la expresión no se evalúa .
Original:
If no side effects are produced by an expression and the compiler can determine that the value is not used, the expression is not evaluated.
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 relación entre las evaluaciones en el mismo hilo (puede extenderse a través de las discusiones si los tipos atómicos y las barreras de memoria están involucrados) .
Original:
"sequenced-before" is an asymmetric, transitive, pair-wise relationship between evaluations within the same thread (it may extend across threads if atomic types and memory barriers are involved).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
  • Si un punto de secuencia está presente entre el subexpresiones E1 y E2, entonces tanto cálculo de valor y los efectos secundarios de E1 se secuenciaron antes de cada cálculo de valor y efecto secundario de E2
    Original:
    If a sequence point is present between the subexpressions E1 and E2, then both value computation and side effects of E1 are sequenced before every value computation and side effect of E2
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Si la evaluación es una secuencia antes de la evaluación B, entonces la evaluación de A se completará antes de la evaluación de B comienza. (desde C11)
    Original:
    If evaluation A is sequenced before evaluation B, then evaluation of A will be complete before evaluation of B begins. (desde C11)
    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. (desde C11)
    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. (desde C11)
    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: (desde C11)
    Original:
    If A is not sequenced before B and B is not sequenced before A, then two possibilities exist: (desde C11)
    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)
Hay un punto de secuencia después de la evaluación de todos los argumentos de la función y del designador de función, y antes de la llamada a la función .
Original:
There is a sequence point after the evaluation of all function arguments and of the function designator, and before the actual function call.
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). (desde C11)
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). (desde C11)
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 evaluación de la primera (izquierda) y operando antes de la evaluación de la segunda (derecha) operando de los operadores binarios siguientes: && (AND lógico), || (OR lógico), y , (coma) .
Original:
There is a sequence point after evaluation of the first (left) operand and before evaluation of the second (right) operand of the following binary operators: && (logical AND), || (logical OR), and , (comma).
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
4)
Hay un punto de secuencia después de la evaluación de la primera (izquierda) y operando antes de la evaluación de los operandos de segunda o tercera (lo que se evalúa) del ?: operador condicional
Original:
There is a sequence point after evaluation of the first (left) operand and before evaluation of the second or third operand (whichever is evaluated) of the conditional operator ?:
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 (modificación del argumento de la izquierda) del operador de asignación directa y de todos los 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. (desde C11)
Original:
The side effect (modification of the left argument) of the direct assignment operator and of all compound assignment operators is sequenced after the value computation (but not the side effects) of both left and right arguments. (desde C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
6)
El cálculo del valor de los operadores posincremento y postdecrement se secuencia antes de su efecto secundario. (desde C11)
Original:
The value computation of the postincrement and postdecrement operators is sequenced before its side-effect. (desde C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Hay un punto de la secuencia en el extremo de un declarador completo. (desde C99)
Original:
There is a sequence point at the end of a full declarator. (desde C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
8)
Hay un punto de secuencia después de la evaluación de una expresión completa (una expresión que no es una subexpresión: por lo general algo que termina con un punto y coma o una declaración de si el control / interruptor / mientras / hacer) y antes de la plena expresión siguiente .
Original:
There is a sequence point after the evaluation of a full expression (an expression that is not a subexpression: typically something that ends with a semicolon or a controlling statement of if/switch/while/do) and before 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.
9)
Hay un punto de secuencia inmediatamente antes del retorno de una función de biblioteca. (desde C99)
Original:
There is a sequence point immediately before the return of a library function. (desde C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
10)
Hay un punto de secuencia después de la acción asociada con cada especificador de conversión en formato I / O. (desde C99)
Original:
There is a sequence point after the action associated with each conversion specifier in formatted I/O. (desde C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
11)
Hay puntos de secuencia antes e inmediatamente después de cada llamada a una función de comparación que hace las funciones de biblioteca y qsort bsearch, así como entre cualquier llamada a la función de comparación y el movimiento de los objetos asociados hechas por qsort (desde C99)
Original:
There are sequence points before and immediately after each call to a comparison function made by the library functions qsort and bsearch, as well as between any call to the comparison function and the movement of the associated objects made by qsort (desde C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
12)
Una llamada a una función que no está secuenciado antes o después de otra secuencia llamada a la función es indeterminado secuenciado (instrucciones de la CPU que constituyen las diferentes llamadas de función no puede ser intercalada, aunque las funciones son en línea) (desde C11)
Original:
A function call that is not sequenced before or sequenced after another function call is indeterminately sequenced (CPU instructions that constitute different function calls cannot be interleaved, even if the functions are inlined) (desde C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
13)
En las expresiones de la lista de inicialización, todas las evaluaciones se secuenció (desde C11) indeterminadamente
Original:
In initialization list expressions, all evaluations are indeterminately sequenced (desde C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
14)
Con respecto a una llamada de función indeterminada-secuenciado, el funcionamiento de los operadores de asignación compuestos, y el prefijo tanto y formas de sufijo de incremento y decremento operadores son evaluaciones individuales. (desde C11)
Original:
With respect to an indeterminately-sequenced function call, the operation of compound assignment operators, and both prefix and postfix forms of increment and decrement operators are single evaluations. (desde C11)
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
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.

f(i, i++); // undefined behavior
a[i] = i++; // undefined bevahior

3)
Las reglas se aplican siempre y cuando por lo menos admisible una orden de subexpresiones permite tal sin secuencia de efectos secundarios .
Original:
The above rules apply as long as at least one allowable ordering of subexpressions permits such an unsequenced side-effect.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[editar] Ver también

La precedencia de operadores que define cómo las expresiones se construyen a partir de su representación código fuente .
Original:
La precedencia de operadores which defines how expressions are built from their source code representation.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.