Namespace
Varianti

Order of evaluation

Da cppreference.com.
< c‎ | language

 
 
Linguaggio C
Temi generali
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.
Preprocessore
Commenti
Parole chiave
Tabella ASCII
Sequenze di escape
Storia di C
Controllo del flusso
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.
Dichiarazioni esecuzione condizionale
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.
Iterazione dichiarazioni
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.
Vai dichiarazioni
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.
Funzioni
Original:
Functions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
dichiarazione di funzione
specificatore inline
Tipi
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
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 specificatori
della classe di archiviazione specificatori
alignas specificatore (C99)
Letterali
Original:
Literals
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Espressioni
Original:
Expressions
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
ordine di valutazione
operatori alternativi
operatori
precedenza degli operatori
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.
typedef declaration
attributi (C99)
getta
Varie
Original:
Miscellaneous
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Montaggio in linea
 
Ordine di valutazione degli operandi di qualsiasi operatore C, tra cui l'ordine di valutazione degli argomenti delle funzioni in una chiamata di funzione di espressione, e l'ordine di valutazione delle sottoespressioni all'interno di qualsiasi espressione non è specificato (salvo quanto indicato di seguito). Il compilatore li valuterà in qualsiasi ordine, e può scegliere un altro ordine quando la stessa espressione viene valutata di nuovo.
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.
Non esiste il concetto di sinistra a destra o da destra a sinistra valutazione in C, che non deve essere confusa con da sinistra a destra e da destra a sinistra l'associatività degli operatori: il a + b + c espressione viene analizzata come (a + b) + c causa a sinistra a destra associatività di + operatore, ma il c sottoespressione può essere valutata prima (o l'ultimo, o al momento stesso o a b) in fase di esecuzione.
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.

Indice

[modifica] Definizioni

[modifica] Valutazioni

Ci sono due tipi di valutazioni eseguite dal compilatore per ogni espressione o sottoespressione (entrambi opzionali):
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.
  • Calcolo valore: calcolo del valore restituito dall'espressione. Questo può comportare la determinazione dell'identità dell'oggetto (lvalue valutazione) o la lettura del valore precedentemente assegnato ad un oggetto (valutazione 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.
  • Effetto lato: accesso (lettura o scrittura) ad un oggetto designato da un volatile glvalue, modifica (scrittura) ad un oggetto, la modifica di un file, modificare il floating-point ambiente (se supportato), o chiamare una funzione che non una di tali operazioni.
    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.
Se nessun effetto collaterale è prodotto da un'espressione e il compilatore può determinare che il valore non viene utilizzato, l'espressione non viene valutata.
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.

[modifica] Ordinazione

"In sequenza-prima" è una asimmetrica, transitiva, a coppie rapporto tra le valutazioni all'interno dello stesso thread (che può estendersi in discussioni se i tipi atomici e le barriere di memoria sono coinvolti).
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.
  • Se un punto di sequenza è presente tra la sottoespressioni E1 e E2, quindi entrambi calcolo valore e gli effetti collaterali di E1 sono in sequenza prima di ogni calcolo del valore ed effetto collaterale di 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.
  • Se la valutazione è una sequenza prima della valutazione B, allora la valutazione di A sarà completata prima della valutazione del B comincia. (dal C11)
    Original:
    If evaluation A is sequenced before evaluation B, then evaluation of A will be complete before evaluation of B begins. (dal C11)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Se A non è in sequenza prima di B e B è in sequenza prima di A, allora la valutazione di B sarà completata prima della valutazione di A comincia. (dal 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. (dal C11)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • Se A non è in sequenza prima di B e B non è in sequenza prima di A, allora esistono due possibilità: (dal C11)
    Original:
    If A is not sequenced before B and B is not sequenced before A, then two possibilities exist: (dal C11)
    The text has been machine-translated via Google Translate.
    You can help to correct and verify the translation. Click here for instructions.
  • * Valutazioni di A e B sono non in sequenza: possono essere eseguiti in qualsiasi ordine e possono sovrapporsi (all'interno di un singolo thread di esecuzione, il compilatore può alterna le istruzioni che comprendono CPU A e 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.
  • * Valutazioni di A e B sono indeterminably-sequenza: possono essere eseguite in qualsiasi ordine, ma non possono sovrapporsi: o A sarà completa prima di B, o B sarà completa prima di A. L'ordine può essere il contrario la prossima volta lo stesso espressione viene valutata.
    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.

[modifica] Regole

1)
C'è un punto di sequenza dopo la valutazione di tutti gli argomenti della funzione e del designatore funzione, e prima che la chiamata di funzione reale.
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)
I calcoli di valore (ma non gli effetti collaterali) degli operandi di ogni operatore sono in sequenza prima il calcolo del valore del risultato dell'operatore (ma non i suoi effetti collaterali). (dal 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). (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
3)
C'è un punto di sequenza dopo la valutazione del primo (a sinistra) e operando prima della valutazione del secondo (a destra) operando delle seguenti operatori binari: && (AND logico), || (OR logico), e , (virgola).
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)
C'è un punto di sequenza dopo la valutazione del primo (a sinistra) operando e prima valutazione dei operando secondo o terzo (a seconda di quale è valutata) del ?: operatore condizionale
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'effetto collaterale (modifica l'argomento a sinistra) dell'operatore di assegnazione diretta e di tutti gli operatori di assegnazione composti è in sequenza dopo il calcolo del valore (ma non gli effetti collaterali) di argomenti di destra e sinistra. (dal 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. (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
6)
Il calcolo del valore degli operatori postincremento e postdecrement è sequenziato prima del suo effetto collaterale. (dal C11)
Original:
The value computation of the postincrement and postdecrement operators is sequenced before its side-effect. (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
7)
Vi è un punto di sequenza al termine di un dichiaratore completa. (dal C99)
Original:
There is a sequence point at the end of a full declarator. (dal C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
8)
C'è un punto di sequenza dopo la valutazione di una piena espressione (espressione che non è una sottoespressione: in genere qualcosa che termina con un punto e virgola o una dichiarazione di controllo if / switch / while / do) e prima l'espressione successiva completa.
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)
Vi è un punto di sequenza immediatamente prima del ritorno di una funzione di libreria. (dal C99)
Original:
There is a sequence point immediately before the return of a library function. (dal C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
10)
C'è un punto di sequenza dopo l'azione associata a ciascun indicatore di conversione in formato I / O. (dal C99)
Original:
There is a sequence point after the action associated with each conversion specifier in formatted I/O. (dal C99)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
11)
Ci sono punti di sequenza prima ed immediatamente dopo ogni chiamata a una funzione di confronto effettuato dalle funzioni di libreria qsort e bsearch, nonché tra qualsiasi chiamata alla funzione di confronto e il movimento degli oggetti associati realizzati da qsort (dal 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 (dal 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 chiamata di funzione che non viene sequenziato prima o in sequenza dopo l'altra chiamata di funzione è indeterminata sequenziato (istruzioni della CPU che costituiscono diverse chiamate di funzione non può essere interlacciata, anche se le funzioni sono inline) (dal 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) (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
13)
Nelle espressioni lista di inizializzazione, tutte le valutazioni sono indeterminatamente sequenza (dal C11)
Original:
In initialization list expressions, all evaluations are indeterminately sequenced (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
14)
Per quanto riguarda una chiamata di funzione indeterminata-sequenza, l'operazione di operatori di assegnazione composti, e sia prefisso e forme postfix di operatori di incremento e decremento sono valutazioni singole. (dal 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. (dal C11)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

[modifica] Comportamento non definito

1)
Se un effetto collaterale su un oggetto scalare è non in sequenza rispetto ad un altro effetto collaterale sull'oggetto scalare stessa, il comportamento è indefinito.
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)
Se un effetto collaterale su un oggetto scalare è non in sequenza rispetto ad un valore di calcolo utilizzando il valore dell'oggetto scalare stessa, il comportamento è indefinito.
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)
Le norme di cui sopra si applicano fino a quando almeno uno ammissibile ordinamento sottoespressioni permette tale effetto collaterale non in sequenza.
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.

[modifica] Vedi anche

Precedenza degli operatori che definisce come le espressioni sono costruiti dalla loro rappresentazione del codice sorgente.
Original:
Precedenza degli operatori 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.