Ordine di valutazione
In questa sezione viene descritto l'ordine in cui vengono valutate le espressioni ma non viene illustrata la sintassi o la semantica degli operatori in queste espressioni.Le sezioni precedenti forniscono un riferimento completo per ognuno di questi operatori.
Le espressioni vengono valutate in base alla priorità e il raggruppamento degli operatori.(precedenza e associatività di operatore in convenzioni lessicali, nelle relazioni degli operatori di C++ impongono le espressioni.) Si consideri l'esempio seguente:
Esempio
// expre_pluslang__pluslang_Order_of_Evaluation.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int a = 2, b = 4, c = 9;
cout << a + b * c << "\n";
cout << a + (b * c) << "\n";
cout << (a + b) * c << "\n";
}
Output
38
38
54
ordine di Espressione-Valutazione
L'ordine in cui l'espressione riportata nella figura sopra viene valutata è determinato dalla precedenza e dall'associatività degli operatori:
La moltiplicazione (*) ha la massima precedenza in questa espressione; la sottoespressione b * c viene valutato per primo.
Addizione (+) ha la precedenza più elevata successivo, pertanto a verrà aggiunto al prodotto di b e c.
Lo spostamento a sinistra (<<) ha la precedenza minima nell'espressione, ma esistono due occorrenze.Poiché operatore di spostamento a sinistra raggruppa da sinistra a destra, la sottoespressione sinistra innanzitutto e viene quindi valutata la destra.
Quando le parentesi vengono utilizzate per raggruppare le sottoespressioni, si modifica la precedenza e anche l'ordine in cui l'espressione viene valutata, come illustrato nella figura seguente.
Ordine di Espressione-Valutazione con parentesi
Espressioni come tali nella figura sopra vengono valutate puramente per gli effetti collaterali (in questo caso, per trasferire le informazioni del dispositivo di output standard.