Espaces de noms
Variantes
Affichages
Actions

Order of evaluation

De cppreference.com
< c‎ | language

 
 
Langage C
Les sujets généraux
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
Commentaires
Mots-clés
Table ASCII
Séquences d'échappement
Histoire de C
Le contrôle de flux
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.
États d'exécution conditionnelles
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.
Des instructions d'itération
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.
Aller déclarations
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.
Fonctions
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
déclaration de la fonction
spécificateur inline
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.
Les prescripteurs
Original:
Specifiers
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
prescripteurs cv
classe de stockage prescripteurs
alignas spécificateur (C99)
Littéraux
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.
ordre d'évaluation
les opérateurs alternatifs
opérateurs
la priorité des opérateurs
Utilitaires
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
attributs (C99)
jette
Divers
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Assembleur inline
 
Ordre d'évaluation des opérandes d'un opérateur C, y compris l'ordre d'évaluation des arguments de la fonction dans une expression d'appel de fonction, et l'ordre d'évaluation des sous-expressions dans des toute expression n'est pas spécifié (sauf indication contraire ci-dessous). Le compilateur de les évaluer dans n'importe quel ordre, et peut choisir un autre ordre où la même expression est évaluée à nouveau .
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.
Il n'y a pas de notion de gauche à droite ou de droite à gauche évaluation en C, qui ne doit pas être confondu avec de gauche à droite et de droite à gauche associativité des opérateurs: la a + b + c expression est analysée comme (a + b) + c raison à gauche à droite associativité de + opérateur, mais la sous-expression c peut être évaluée en premier (ou dernier, ou en même temps que a ou b) lors de l'exécution .
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.

Sommaire

[modifier] Définitions

[modifier] Évaluations

Il existe deux types d'évaluations effectuées par le compilateur pour chaque expression ou sous-expression (qui sont tous deux en option):
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.
  • ' Calcul de la valeur: le calcul de la valeur qui est retournée par l'expression. Cela peut impliquer la détermination de l'identité de l'objet (lvalue évaluation) ou la lecture de la valeur précédemment affectée à un objet (évaluation 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.
  • ' Effet secondaire: l'accès (lecture ou écriture) à un objet désigné par un volatile glvalue, la modification (par écrit) à un objet, modifier un fichier, modification de l'environnement à virgule flottante (si pris en charge), ou en appelant une fonction qui fait l'une de ces opérations .
    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.
S'il n'y a pas d'effets secondaires sont produites par une expression et le compilateur peut déterminer que la valeur n'est pas utilisée, l'expression n'est pas évaluée .
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.

[modifier] De la commande

«Ordonnée avant» est asymétrique, transitive, par paires relation entre les évaluations dans le même thread (il peut s'étendre à travers les discussions, si les types atomiques et les obstacles de mémoire sont impliqués) .
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 point de la séquence est présente entre la sous-expressions E1 et E2, puis calcul de la valeur à la fois et les effets secondaires de E1 sont séquencés avant chaque calcul de valeur et des effets secondaires 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 l'évaluation Une évaluation est séquencé avant B, puis évaluation de A sera terminée avant l'évaluation du B commence. (depuis C11)
    Original:
    If evaluation A is sequenced before evaluation B, then evaluation of A will be complete before evaluation of B begins. (depuis 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 n'est pas séquencé avant B et B est séquencé avant A, puis l'évaluation de B sera terminée avant l'évaluation de A commence. (depuis 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. (depuis 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 n'est pas séquencé avant B et B n'est pas séquencé avant A, alors il ya deux possibilités: (depuis C11)
    Original:
    If A is not sequenced before B and B is not sequenced before A, then two possibilities exist: (depuis C11)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • * Évaluations de A et B sont non séquencée: ils peuvent être réalisés dans n'importe quel ordre et peuvent se chevaucher (au sein d'un seul thread d'exécution, le compilateur peut imbriquer les instructions CPU qui composent A et 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.
  • * Évaluations de A et B sont indeterminably-séquence: ils peuvent être réalisés dans n'importe quel ordre, mais peut se chevauchent pas: soit A sera terminée avant B, ou B sera terminée avant A. L'ordonnance peut être l'inverse la prochaine fois que la même expression est évaluée .
    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.

[modifier] Règles

1)
Il ya un point de séquence après l'évaluation de tous les arguments de la fonction et de l'indicatif de fonction, et avant l'appel de fonction réelle .
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)
Les calculs de valeur (mais pas les effets secondaires) des opérandes à tout opérateur sont séquencés avant le calcul de la valeur du résultat de l'opérateur (mais pas ses effets secondaires). (depuis 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). (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3)
Il ya un point de séquence après l'évaluation de la première (à gauche) et l'opérande avant l'évaluation de la seconde (à droite) opérande des opérateurs binaires suivants: && (ET logique), || (OU logique), et , (virgule) .
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)
Il existe un point de séquence après l'évaluation de la première (à gauche) et l'opérande avant l'évaluation de l'opérande deuxième ou le troisième (lequel est évalué) de l'opérateur conditionnel ?:
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)
L'effet secondaire (modification de l'argument de gauche) de l'opérateur d'affectation directe et de tous les opérateurs d'affectation composés est séquencé après le calcul de la valeur (mais pas les effets secondaires) des arguments à la fois à gauche et à droite. (depuis 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. (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
6)
Le calcul de la valeur des opérateurs postincrement et Post-décrémentation est séquencé avant son effet secondaire. (depuis C11)
Original:
The value computation of the postincrement and postdecrement operators is sequenced before its side-effect. (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Il existe une séquence de points à la fin d'un déclarateur plein. (depuis C99)
Original:
There is a sequence point at the end of a full declarator. (depuis C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
8)
Il ya un point de séquence après l'évaluation d'une expression complète (une expression qui n'est pas une sous-expression: typiquement quelque chose qui se termine par un point-virgule ou une déclaration de contrôler si le commutateur / / while / do) et avant la prochaine pleine expression .
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)
Il ya un point de séquence immédiatement avant le retour d'une fonction de bibliothèque. (depuis C99)
Original:
There is a sequence point immediately before the return of a library function. (depuis C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
10)
Il ya un point de séquence après l'action associée à chaque indicateur de conversion de format I / O. (depuis C99)
Original:
There is a sequence point after the action associated with each conversion specifier in formatted I/O. (depuis C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
11)
Il ya des points de séquence avant et immédiatement après chaque appel à une fonction de comparaison effectuée par les fonctions de la bibliothèque et qsort bsearch, ainsi qu'entre un appel à la fonction de comparaison et le mouvement des objets associés formulées par qsort (depuis 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 (depuis C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
12)
Un appel de fonction qui n'est pas séquencé avant ou en séquence après l'autre appel de fonction pour une durée indéterminée est séquencé (instructions CPU qui constituent des appels de fonctions différentes ne peuvent pas être imbriquées, même si les fonctions sont inline) (depuis 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) (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
13)
Dans les expressions d'initialisation liste, toutes les évaluations sont séquencés pour une durée indéterminée (depuis C11)
Original:
In initialization list expressions, all evaluations are indeterminately sequenced (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
14)
En ce qui concerne un appel de fonction pour une durée indéterminée-séquence, le fonctionnement des opérateurs d'affectation composés, et à la fois préfixe et suffixe formes d'incrémentation et de décrémentation opérateurs sont des évaluations individuelles. (depuis 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. (depuis C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifier] Un comportement indéfini

1)
Si un effet secondaire sur un objet scalaire est non séquencée par rapport à un autre effet secondaire sur l'objet scalaire même, le comportement est indéfini .
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 effet secondaire sur un objet scalaire est non séquencée par rapport à un calcul de la valeur en utilisant la valeur de l'objet scalaire même, le comportement est indéfini .
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)
Les règles ci-dessus s'appliquent aussi longtemps qu'au moins un des sous-expressions admissible commande permet un tel non séquencée effet secondaire .
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.

[modifier] Voir aussi

La priorité des opérateurs qui définit la façon dont les expressions sont construites à partir de leur représentation en code source .
Original:
La priorité des opérateurs 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.