Altri operatori
Le espressioni, per quanto visto sopra, rappresentano un elemento basilare
del C++, tant'e` che il linguaggio fornisce un ampio insieme di operatori.
La tabella che segue riassume brevemente quasi tutti gli operatori del linguaggio,
per completarla dovremmo aggiungere alcuni particolari operatori di conversione
di tipo per i quali si rimanda all'appendice A.
SOMMARIO DEGLI OPERATORI
:: |
risolutore di scope |
.
->
[ ]
( )
( )
++
-- |
selettore di campi
selettore di campi
sottoscrizione
chiamata di funzione
costruttore di valori
post incremento
post decremento |
sizeof
++
--
~
!
-
+
&
*
new
new[ ]
delete
delete[ ]
( ) |
dimensione di
pre incremento
pre decremento
complemento
negazione
meno unario
piu` unario
indirizzo di
dereferenzazione
allocatore di oggetti
allocatore di array
deallocatore di oggetti
deallocatore di array
conversione di tipo |
.*
->* |
selettore di campi
selettore di campi |
*
/
% |
moltiplicazione
divisione
modulo (resto) |
+
- |
somma
sottrazione |
<<
>> |
shift a sinistra
shift a destra |
<
<=
>
>= |
minore di
minore o uguale
maggiore di
maggiore o uguale |
==
!= |
uguale a
diverso da |
& |
AND di bit |
^ |
OR ESCLUSIVO di bit |
| |
OR INCLUSIVO di bit |
&& |
AND logico |
|| |
OR logico (inclusivo) |
? : |
espressione condizionale |
=
*=
/=
%=
+=
-=
<<=
>>=
&=
|=
^= |
assegnamento semplice
moltiplica e assegna
divide e assegna
modulo e assegna
somma e assegna
sottrae e assegna
shift sinistro e assegna
shift destro e assegna
AND e assegna
OR inclusivo e assegna
OR esclusivo e assegna |
throw |
lancio di eccezioni |
, |
virgola |
Gli operatori sono raggruppati in base alla loro precedenza: in alto quelli
a precedenza maggiore. Gli operatori unari e quelli di assegnamento sono associativi
a destra, gli altri a sinistra. L'ordine di valutazione delle sottoespressioni
che compongono una espressione piu` grande non e` definito, ad esempio nell'espressione
Pippo = 10*13 + 7*25;
non si sa quale tra 10*13 e 7*25 verra` valutata
per prima (si noti che comunque verranno rispettate le regole di precedenza
e associativita`).
Gli operatori di assegnamento e quelli di (auto)incremento e (auto)decremento
sono gia` stati descritti, esamineremo ora l'operatore per le espressioni condizionali.
L'operatore ? : e` l'unico operatore ternario:
<Cond> ? <Expr1> : <Expr2>
La semantica di questo operatore non e` molto complicata: Cond
puo` essere una qualunque espressione che produca un valore booleano (Vedi paragrafo
successivo), se essa e` verificata il risultato di tale operatore e` la valutazione
di Expr1 , altrimenti il risultato e` Expr2 .
Per quanto riguarda gli altri operatori, alcuni saranno esaminati quando sara`
necessario; non verranno invece discussi gli operatori logici e quelli di confronto
(la cui semantica viene considerata nota al lettore). Rimangono gli operatori
per lo spostamento di bit, ci limiteremo a dire che servono sostanzialmente
a eseguire moltiplicazioni e divisioni per multipli di 2 in modo efficiente.
|