Abilitare JavaScript per vedere questo sito.

Assegnazioni

lvalue deve essere un'espressione che valuta una posizione di memoria in cui il valore dell'espressione può essere memorizzato, ad esempio una variabile. Un'assegnazione valuta lo stesso valore e lo stesso tipo di dati memorizzati. L'espressione di destra viene sempre calcolata prima di quella di sinistra.

Chiamate a funzione

Le funzioni vengono chiamate per eseguire un'azione ed eventualmente restituire un valore che può essere utilizzato in altre operazioni. Se una funzione accetta più di un argomento, le espressioni degli argomenti vengono valutate in ordine inverso, cioè l'ultimo argomento viene valutato per primo.

Alcune funzioni sono dichiarate con parametri di riferimento in uscita per restituire più valori. Quando si chiamano tali funzioni, il parametro di uscita deve essere fornito come espressione che può essere assegnata al valore restituito. Se il valore di uscita aggiuntivo non verrà utilizzato, utilizzare l'argomento speciale "void" per indicare al compilatore questa possibilità.

Gli argomenti possono anche essere denominati e passati a un argomento specifico, indipendentemente dall'ordine in cui i parametri sono stati dichiarati. Nessun argomento posizionale può seguire un argomento nominato.

Operatori matematici

operatore

descrizione

mano sinistra

mano destra

risultato

+

unario positivo

 

NUM

NUM

-

unario negativo

 

NUM

NUM

+

addizione

NUM

NUM

NUM

-

sottrazione

NUM

NUM

NUM

*

moltiplicazione

NUM

NUM

NUM

/

divisione

NUM

NUM

NUM

%

moduli

NUM

NUM

NUM

**

esponente

NUM

NUM

NUM

Il più e il meno possono essere utilizzati anche come operatori unari. NUM può essere scambiato con qualsiasi tipo numerico, ad esempioint o float. Entrambi i termini delle operazioni doppie vengono convertiti implicitamente nello stesso tipo. Il risultato è sempre dello stesso tipo dei termini originali. Un'eccezione è rappresentata dal negativo unario, che non è disponibile per uint.

Operatori a bit

operatore

descrizione

mano sinistra

mano destra

risultato

~

complemento bitwise

 

NUM

NUM

&

in modo bitwise e

NUM

NUM

NUM

|

bitwise o

NUM

NUM

NUM

^

xor bitwise

NUM

NUM

NUM

<<

spostamento a sinistra

NUM

NUM

NUM

>>

spostamento a destra

NUM

NUM

NUM

>>>

spostamento aritmetico a destra

NUM

NUM

NUM

Tutti, tranne ~, sono operatori doppi.

Entrambi gli operandi vengono convertiti in numeri interi mantenendo il segno del tipo originale prima dell'operazione. Il tipo risultante sarà lo stesso dell'operando di sinistra.

Assegnazione composta

Un assegnamento composto è una combinazione di un operatore seguito da un assegnamento. Le due espressioni qui sopra significano praticamente la stessa cosa. Solo che la prima è più efficiente in quanto il valore l viene valutato una sola volta, il che può fare la differenza se il valore l è di per sé un'espressione complessa.

Operatori disponibili: += -= *= /= %= **= &= |= ^= <<= >>= >>>=

Operatori logici

operatore

descrizione

mano sinistra

mano destra

risultato

not

logico non

 

bool

bool

and

logico e

bool

bool

bool

or

logico o

bool

bool

bool

xor

logico esclusivo o

bool

bool

bool

Gli operatori booleani valutano solo i termini necessari. Ad esempio, nell'espressione a e b, b viene valutato solo se a è vero.

Ciascun operatore logico può essere scritto anche come simbolo, ad esempio || per or, && per and, ^^ per xor e ! per not.

Operatori di confronto di uguaglianza

Gli operatori == e != vengono utilizzati per confrontare due valori e determinare se sono rispettivamente uguali o non uguali. Il risultato di questa operazione è sempre un valore booleano.

Operatori di confronto relazionale

Gli operatori <, >, <= e >= vengono utilizzati per confrontare due valori e determinarne la relazione. Il risultato è sempre un valore booleano.

Operatori di confronto identità

Gli operatori is e !is vengono utilizzati per confrontare l'identità di due oggetti, ossia per determinare se i due oggetti sono uguali o meno. Questi operatori sono validi solo per i tipi di riferimento, poiché confrontano l'indirizzo di due oggetti. Il risultato è sempre un valore booleano.

Operatori di incremento

Questi operatori possono essere anteposti o posposti a un valore l per incrementare/decrementare il suo valore prima o dopo l'utilizzo nell'espressione. Il valore viene sempre incrementato o decrementato con 1.

Operatori di indicizzazione

Questo operatore viene utilizzato per accedere a un elemento contenuto nell'oggetto. A seconda del tipo di oggetto, l'espressione tra i [] deve essere di tipo diverso.

Espressioni condizionali

Se il valore di choose è vero, l'espressione restituisce a altrimenti restituisce b.

Sia a che b devono essere dello stesso tipo. Se non lo sono, il compilatore tenterà una conversione implicita seguendo il principio del minor costo, cioè l'espressione che verrà convertita è quella che costa meno da convertire. Questo costo viene determinato nello stesso modo in cui viene fatto per la corrispondenza degli argomenti nelle chiamate di funzione.

Se la conversione non funziona o se la conversione di entrambe le espressioni ha lo stesso costo, il compilatore darà un errore.

L'espressione condizionale può essere utilizzata come valore l, cioè come valore a sinistra di un'espressione di assegnazione, se sia a che b sono valori l dello stesso tipo.

Accesso ai membri

L'oggetto deve essere un'espressione che dà come risultato un tipo di dati che ha dei membri. property è il nome di una variabile membro che può essere letta/impostata direttamente. method è il nome di un metodo membro che può essere richiamato sull'oggetto.

Handle-of

Gli handle degli oggetti sono riferimenti a un oggetto. Più di un handle può fare riferimento allo stesso oggetto e solo quando non ci sono più handle che fanno riferimento a un oggetto, l'oggetto viene distrutto.

Si accede ai membri dell'oggetto a cui l'handle fa riferimento nello stesso modo in cui si accede direttamente alla variabile dell'oggetto, cioè con l'operatore .

Parentesi

Le parentesi vengono utilizzate per raggruppare le espressioni quando la precedenza degli operatori non fornisce l'ordine di valutazione desiderato.

Risoluzione ambito

L'operatore di risoluzione dell'ambito :: può essere utilizzato per accedere a variabili o funzioni da un altro ambito quando il nome è sovraccaricato da una variabile o funzione locale. Scrivete il nome dell'ambito a sinistra (o vuoto per l'ambito globale) e il nome della variabile/funzione a destra.

Conversioni di tipo

Gli handle degli oggetti possono essere convertiti in altri handle di oggetti con l'operatore cast. Se il cast è valido, cioè l'oggetto vero implementa la classe o l'interfaccia richiesta, l'operatore restituisce un handle valido. Se il cast non è valido, restituisce un handle nullo.

Questo metodo è chiamato cast di riferimento e funziona solo per i tipi che supportano gli handle degli oggetti. In questo caso, l'handle fa ancora riferimento allo stesso oggetto, ma è solo esposto attraverso un'interfaccia diversa.

I tipi che non supportano gli handle degli oggetti possono essere convertiti con un cast di valore. In questo caso viene costruito un nuovo valore o, nel caso degli oggetti, viene creata una nuova istanza dell'oggetto.

Nella maggior parte dei casi, tuttavia, un cast esplicito non è necessario per i tipi primitivi, poiché il compilatore è solitamente in grado di eseguire un cast implicito al tipo corretto.

Oggetti anonimi

Gli oggetti anonimi, cioè creati senza essere dichiarati come variabili, possono essere istanziati nelle espressioni invocando il costruttore dell'oggetto come se fosse una funzione. Sia i tipi di riferimento che i tipi di valore possono essere creati in questo modo.

Per i tipi che lo supportano, gli oggetti anonimi possono anche essere inizializzati con liste di inizializzazione.

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC