Operatori in C e C++: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 46:
</syntaxhighlight>L'operatore moltiplicazione (<code>*</code>) possiede priorità 5, mentre l'operatore addizione (<code>+</code>) possiede priorità 6; pertanto il risultato a schermo sarà '''53''' e non 19.
=== Tabella delle precedenze e delle associatività ===
Nella tabella seguente sono elencati tutti gli operatori in ordine di priorità, le loro associatività e ìì. Essi sono sempre implementabili su C++, mentre alcuni non lo sono in C.
{| class="wikitable"
Riga 57 ⟶ 56:
!Associatività
|-
! rowspan="2" |1
(priorità massima)
|<code>class-name :: member</code>
Riga 65 ⟶ 64:
|sinistra
|-
|<code>:: member</code>
|'''Risolutore globale di visibilità'''
Riga 71 ⟶ 69:
|destra
|-
! rowspan="8" |2
|<code>object . member</code>
|'''Selezione'''
Riga 77 ⟶ 75:
|sinistra
|-
|<code>pointer -> member</code>
|'''Deferenziazione e selezione'''
Riga 83 ⟶ 80:
|sinistra
|-
|<code>array[ rvalue ]</code>
|'''Indicizzazione'''
Riga 89 ⟶ 85:
|sinistra
|-
|<code>function ( actual-argument-list )</code>
|'''Chiamata di funzione'''
Riga 95 ⟶ 90:
|sinistra
|-
|<code>lvalue ++</code>
|'''Postincremento'''
Riga 101 ⟶ 95:
|destra
|-
|<code>lvalue --</code>
|'''Postdecremento'''
Riga 107 ⟶ 100:
|destra
|-
|<code>static_cast type<rvalue></code>
|'''Conversione di tipo'''
Riga 113 ⟶ 105:
|sinistra
|-
|<code>const_cast type<rvalue></code>
|'''Conversione const'''
Riga 119 ⟶ 110:
|sinistra
|-
! rowspan="13" |3
|<code>sizeof object</code>
<code>sizeof (type)</code>
Riga 128 ⟶ 119:
|destra
|-
|<code>++ lvalue</code>
|'''Preincremento'''
Riga 134 ⟶ 124:
|destra
|-
|<code>-- lvalue</code>
|'''Predecremento'''
Riga 140 ⟶ 129:
|destra
|-
|<code>~ rvalue</code>
|'''Complemento bit a bit'''
Riga 146 ⟶ 134:
|destra
|-
|<code>! rvalue</code>
|'''Negazione'''
Riga 152 ⟶ 139:
|destra
|-
|<code>- rvalue</code>
|'''Meno unitario'''
Riga 158 ⟶ 144:
|destra
|-
|<code>+ rvalue</code>
|'''Più unitario'''
Riga 164 ⟶ 149:
|destra
|-
|<code>& rvalue</code>
|'''Indirizzo'''
Riga 170 ⟶ 154:
|destra
|-
|<code>* rvalue</code>
|'''Deferenziazione'''
Riga 176 ⟶ 159:
|destra
|-
|<code>new type</code>
|'''Allocazione'''
Riga 182 ⟶ 164:
|destra
|-
|<code>new type[]</code>
|'''Allocazione di array'''
Riga 188 ⟶ 169:
|destra
|-
|<code>delete pointer</code>
|'''Deallocazione'''
Riga 194 ⟶ 174:
|destra
|-
|<code>delete[] pointer</code>
|'''Deallocazione di array'''
Riga 200 ⟶ 179:
|destra
|-
! rowspan="2" |4
|<code>object .* pointer-to-member</code>
|'''Selezione con puntatore a membro'''
Riga 206 ⟶ 185:
|sinistra
|-
|<code>pointer ->* pointer-to-member</code>
|'''Deferenziazione e selezione con puntatore a membro'''
Riga 212 ⟶ 190:
|sinistra
|-
! rowspan="3" |5
|<code>rvalue * rvalue</code>
|'''Moltiplicazione'''
Riga 218 ⟶ 196:
|sinistra
|-
|<code>rvalue / rvalue</code>
|'''Divisione'''
Riga 224 ⟶ 201:
|sinistra
|-
|<code>rvalue % rvalue</code>
|'''Modulo'''
Riga 230 ⟶ 206:
|sinistra
|-
! rowspan="2" |6
|<code>rvalue + rvalue</code>
|'''Addizione'''
Riga 236 ⟶ 212:
|sinistra
|-
|<code>rvalue - rvalue</code>
|'''Sottrazione'''
Riga 242 ⟶ 217:
|sinistra
|-
! rowspan="2" |7
|<code>rvalue << rvalue</code>
|'''Traslazione sinistra'''
Riga 248 ⟶ 223:
|sinistra
|-
|<code>rvalue >> rvalue</code>
|'''Traslazione destra'''
Riga 254 ⟶ 228:
|sinistra
|-
! rowspan="4" |8
|<code>rvalue < rvalue</code>
|'''Minore'''
Riga 260 ⟶ 234:
|sinistra
|-
|<code>rvalue <= rvalue</code>
|'''Minore o uguale'''
Riga 266 ⟶ 239:
|sinistra
|-
|<code>rvalue > rvalue</code>
|'''Maggiore'''
Riga 272 ⟶ 244:
|sinistra
|-
|<code>rvalue >= rvalue</code>
|'''Maggiore o uguale'''
Riga 278 ⟶ 249:
|sinistra
|-
! rowspan="2" |9
|<code>rvalue == rvalue</code>
|'''Uguale'''
Riga 284 ⟶ 255:
|sinistra
|-
|<code>rvalue != rvalue</code>
|'''Diverso'''
Riga 290 ⟶ 260:
|sinistra
|-
|<code>rvalue & rvalue</code>
|'''AND bit a bit'''
Riga 296 ⟶ 266:
|sinistra
|-
|<code>rvalue ^ rvalue</code>
|'''OR esclusivo bit a bit'''
Riga 302 ⟶ 272:
|sinistra
|-
|<code><nowiki>rvalue | rvalue</nowiki></code>
|'''OR bit a bit'''
Riga 308 ⟶ 278:
|sinistra
|-
|<code>rvalue && rvalue</code>
|'''AND logico'''
Riga 314 ⟶ 284:
|sinistra
|-
|<code><nowiki>rvalue || rvalue</nowiki></code>
|'''OR logico'''
Riga 320 ⟶ 290:
|sinistra
|-
|<code>co_await</code>
<code>co_yield</code>
Riga 327 ⟶ 297:
|destra
|-
|<code>rvalue ? rvalue : rvalue</code>
|'''Espressione condizionale'''
Riga 333 ⟶ 303:
|sinistra
|-
! rowspan="11" |17
|<code>lvalue = rvalue</code>
|'''Assegnamento'''
Riga 339 ⟶ 309:
|destra
|-
|<code>lvalue += rvalue</code>
|'''Addizione e assegnamento'''
Riga 345 ⟶ 314:
|destra
|-
|<code>lvalue -= rvalue</code>
|'''Sottrazione e assegnamento'''
Riga 351 ⟶ 319:
|destra
|-
|<code>lvalue *= rvalue</code>
|'''Moltiplicazione e assegnamento'''
Riga 357 ⟶ 324:
|destra
|-
|<code>lvalue /= rvalue</code>
|'''Divisione e assegnamento'''
Riga 363 ⟶ 329:
|destra
|-
|<code>lvalue %= rvalue</code>
|'''Modulo e assegnamento'''
Riga 369 ⟶ 334:
|destra
|-
|<code>lvalue &= rvalue</code>
|'''AND bit a bit e assegnamento'''
Riga 375 ⟶ 339:
|destra
|-
|<code><nowiki>lvalue |= rvalue</nowiki></code>
|'''OR bit a bit e assegnamento'''
Riga 381 ⟶ 344:
|destra
|-
|<code>lvalue ^= rvalue</code>
|'''OR esclusivo bit a bit e assegnamento'''
Riga 387 ⟶ 349:
|destra
|-
|<code>lvalue <<= rvalue</code>
|'''Traslazione a sinistra e assegnamento'''
Riga 393 ⟶ 354:
|destra
|-
|<code>lvalue =>> rvalue</code>
|'''Traslazione a destra e assegnamento'''
Riga 399 ⟶ 359:
|destra
|-
(priorità minima)
|<code>expression , expression</code>
|