Programmazione D - Operatori
Un operatore è un simbolo che dice al compilatore di eseguire manipolazioni matematiche o logiche specifiche. Il linguaggio D è ricco di operatori incorporati e fornisce i seguenti tipi di operatori:
- Operatori aritmetici
- Operatori relazionali
- Operatori logici
- Operatori bit per bit
- Operatori di assegnazione
- Operatori vari
In questo capitolo vengono illustrati uno per uno aritmetici, relazionali, logici, bit per bit, di assegnazione e altri operatori.
Operatori aritmetici
La tabella seguente mostra tutti gli operatori aritmetici supportati dal linguaggio D. Assumi variabileA detiene 10 e variabile B detiene 20 quindi -
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
+ | Aggiunge due operandi. | A + B dà 30 |
- | Sottrae il secondo operando dal primo. | A - B dà -10 |
* | Moltiplica entrambi gli operandi. | A * B dà 200 |
/ | Divide il numeratore per denumeratore. | B / A dà 2 |
% | Restituisce il resto di una divisione intera. | B% A dà 0 |
++ | L'operatore di incremento aumenta il valore intero di uno. | A ++ dà 11 |
- | L'operatore decrementa diminuisce il valore intero di uno. | A-- dà 9 |
Operatori relazionali
La tabella seguente mostra tutti gli operatori relazionali supportati dal linguaggio D. Assumi variabileA detiene 10 e variabile B detiene 20, quindi -
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
== | Controlla se i valori di due operandi sono uguali o meno, in caso affermativo la condizione diventa vera. | (A == B) non è vero. |
! = | Controlla se i valori di due operandi sono uguali o meno, se i valori non sono uguali la condizione diventa vera. | (A! = B) è vero. |
> | Controlla se il valore dell'operando sinistro è maggiore del valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A> B) non è vero. |
< | Controlla se il valore dell'operando sinistro è inferiore al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A <B) è vero. |
> = | Controlla se il valore dell'operando sinistro è maggiore o uguale al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A> = B) non è vero. |
<= | Controlla se il valore dell'operando sinistro è minore o uguale al valore dell'operando destro, in caso affermativo la condizione diventa vera. | (A <= B) è vero. |
Operatori logici
La tabella seguente mostra tutti gli operatori logici supportati dal linguaggio D. Assumi variabileA detiene 1 e variabile B tiene 0, quindi -
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
&& | Si chiama operatore AND logico. Se entrambi gli operandi sono diversi da zero, la condizione diventa vera. | (A && B) è falso. |
|| | Si chiama Logical OR Operator. Se uno dei due operandi è diverso da zero, la condizione diventa vera. | (A || B) è vero. |
! | Si chiama Operatore NOT logico. Utilizzare per invertire lo stato logico del proprio operando. Se una condizione è vera, l'operatore NOT logico la renderà falsa. | ! (A && B) è vero. |
Operatori bit per bit
Gli operatori bit per bit lavorano sui bit ed eseguono operazioni bit per bit. Le tabelle di verità per &, | e ^ sono le seguenti:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Assumiamo se A = 60; e B = 13. Nel formato binario saranno i seguenti:
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~ A = 1100 0011
Gli operatori bit per bit supportati dal linguaggio D sono elencati nella tabella seguente. Supponiamo che la variabile A contenga 60 e la variabile B ne contenga 13, quindi -
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
& | L'operatore AND binario copia un po 'nel risultato se esiste in entrambi gli operandi. | (A e B) darà 12, significa 0000 1100. |
| | L'operatore OR binario copia un bit se esiste in uno degli operandi. | (A | B) restituisce 61. Significa 0011 1101. |
^ | L'operatore XOR binario copia il bit se è impostato in un operando ma non in entrambi. | (A ^ B) restituisce 49. Significa 0011 0001 |
~ | Binary Ones Complement Operator è unario e ha l'effetto di "ribaltare" i bit. | (~ A) dà -61. Significa 1100 0011 in forma di complemento di 2. |
<< | Operatore binario di spostamento sinistro. Il valore dell'operando sinistro viene spostato a sinistra del numero di bit specificato dall'operando destro. | A << 2 dà 240. Significa 1111 0000 |
>> | Operatore binario di spostamento a destra. Il valore dell'operando sinistro viene spostato a destra del numero di bit specificato dall'operando destro. | A >> 2 dà 15. Significa 0000 1111. |
Operatori di assegnazione
I seguenti operatori di assegnazione sono supportati dal linguaggio D:
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
= | È un semplice operatore di assegnazione. Assegna i valori dagli operandi del lato destro all'operando del lato sinistro | C = A + B assegna il valore di A + B a C |
+ = | È l'operatore add AND di assegnazione. Aggiunge l'operando destro all'operando sinistro e assegna il risultato all'operando sinistro | C + = A è equivalente a C = C + A |
- = | È l'operatore di sottrazione AND di assegnazione. Sottrae l'operando destro dall'operando sinistro e assegna il risultato all'operando sinistro. | C - = A è equivalente a C = C - A |
* = | È moltiplicare AND operatore di assegnazione. Moltiplica l'operando destro con l'operando sinistro e assegna il risultato all'operando sinistro. | C * = A è equivalente a C = C * A |
/ = | È un operatore di divisione AND di assegnazione. Divide l'operando sinistro con l'operando destro e assegna il risultato all'operando sinistro. | C / = A è equivalente a C = C / A |
% = | È modulo AND operatore di assegnazione. Richiede il modulo utilizzando due operandi e assegna il risultato all'operando sinistro. | C% = A è equivalente a C = C% A |
<< = | È l'operatore di assegnazione AND di spostamento a sinistra. | C << = 2 è uguale a C = C << 2 |
>> = | È l'operatore di assegnazione AND di spostamento a destra. | C >> = 2 è uguale a C = C >> 2 |
& = | È un operatore di assegnazione AND bit per bit. | C & = 2 è uguale a C = C & 2 |
^ = | È OR esclusivo bit per bit e operatore di assegnazione. | C ^ = 2 è uguale a C = C ^ 2 |
| = | È OR bit per bit inclusivo e operatore di assegnazione | C | = 2 è uguale a C = C | 2 |
Operatori vari - Sizeof e Ternary
Ci sono pochi altri operatori importanti tra cui sizeof e ? : supportato da D Language.
Mostra esempi
Operatore | Descrizione | Esempio |
---|---|---|
taglia di() | Restituisce la dimensione di una variabile. | sizeof (a), dove a è intero, restituisce 4. |
& | Restituisce l'indirizzo di una variabile. | &un; fornisce l'indirizzo effettivo della variabile. |
* | Puntatore a una variabile. | *un; fornisce un puntatore a una variabile. |
? : | Espressione condizionale | Se la condizione è vera, allora il valore X: altrimenti il valore Y. |
Precedenza degli operatori in D
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.
Mostra esempi
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 |