D Programmazione - Precedenza operatori
La precedenza degli operatori determina il raggruppamento dei termini in un'espressione. Ciò influisce sul modo in cui viene valutata un'espressione. Alcuni operatori hanno la precedenza su altri.
Ad esempio, l'operatore di moltiplicazione ha una precedenza maggiore dell'operatore di addizione.
Consideriamo un'espressione
x = 7 + 3 * 2.
Qui, x è assegnato 13, non 20. Il semplice motivo è che l'operatore * ha una precedenza maggiore di +, quindi 3 * 2 viene calcolato prima e poi il risultato viene aggiunto in 7.
Qui, gli operatori con la precedenza più alta vengono visualizzati nella parte superiore della tabella, quelli con la priorità più bassa in fondo. All'interno di un'espressione, gli operatori con precedenza più alta vengono valutati per primi.
Categoria | Operatore | Associatività |
---|---|---|
Postfix | () [] ->. ++ - - | Da sinistra a destra |
Unario | + -! ~ ++ - - (tipo) * & sizeof | Da destra a sinistra |
Moltiplicativo | * /% | Da sinistra a destra |
Additivo | + - | Da sinistra a destra |
Cambio | << >> | Da sinistra a destra |
Relazionale | <<=>> = | Da sinistra a destra |
Uguaglianza | ==! = | Da sinistra a destra |
Bitwise AND | & | Da sinistra a destra |
Bitwise XOR | ^ | Da sinistra a destra |
OR bit per bit | | | Da sinistra a destra |
AND logico | && | Da sinistra a destra |
OR logico | || | Da sinistra a destra |
Condizionale | ?: | Da destra a sinistra |
Incarico | = + = - = * = / =% = >> = << = & = ^ = | = | Da destra a sinistra |
Virgola | , | Da sinistra a destra |
Esempio
Prova il seguente esempio per comprendere la precedenza degli operatori disponibile nel linguaggio di programmazione D:
import std.stdio;
int main(string[] args) {
int a = 20;
int b = 10;
int c = 15;
int d = 5;
int e;
e = (a + b) * c / d; // ( 30 * 15 ) / 5
writefln("Value of (a + b) * c / d is : %d\n", e );
e = ((a + b) * c) / d; // (30 * 15 ) / 5
writefln("Value of ((a + b) * c) / d is : %d\n" , e );
e = (a + b) * (c / d); // (30) * (15/5)
writefln("Value of (a + b) * (c / d) is : %d\n", e );
e = a + (b * c) / d; // 20 + (150/5)
writefln("Value of a + (b * c) / d is : %d\n" , e );
return 0;
}
Quando compili ed esegui il programma sopra, produce il seguente risultato:
Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is : 90
Value of (a + b) * (c / d) is : 90
Value of a + (b * c) / d is : 50