- Operatore Composto
- Operatore Espressione
- Operatore Return
- Operatore Condizionale if-else
- Operatore Ternario ?:
- Operatore Switch
- Operatore Ciclico While
- Operatore Ciclico for
- Operatore Ciclico do while
- Operatore Break
- Operatore Continue
- Matrix product operator
- Operatore new di Creazione Oggetto
- Operatore Cancellatore Oggetto delete
Operatore Ternario ?:
La forma generale dell' operatore ternario è la seguente:
espressione1 ? espressione2 : espressione3 |
Per il primo operando - "expression1" - qualsiasi espressione che si traduce in valore di tipo bool può essere utilizzata. Se il risultato è true, allora viene eseguito l'operatore stabilito dal secondo operando, vale a dire "expression2".
Se il primo operando è false, viene eseguito il terzo operando - "expression3". Il secondo operando ed il terzo operando, vale a dire "expression2" ed "expression3" devono restituire i valori di un certo tipo e non devono essere di tipo void. Il risultato dell'esecuzione dell' operatore condizionale è il risultato di expression2 o risultato dei expression3, a seconda del risultato di expression1.
//--- normalizzare la differenza tra il prezzo di apertura e chiusura per un intervallo di giorni
|
Questa voce è equivalente alla seguente:
double true_range;
|
Restrizioni uso operatori #
Sulla base del valore di "expression1", l'operatore deve restituire uno dei due valori - o "expression2" o "expression3". Ci sono numerose limitazioni a queste espressioni:
- Non confondere il tipo definito dall'utente con il tipo semplice o l' enumerazione. NULL può essere utilizzato per puntatore.
- Se tipi di valori sono semplici, l'operatore sarà del tipo massimo (vedere Tipo di casting).
- Se uno dei valori è un' enumerazione ed il secondo è di tipo numerico, l'enumerazione viene sostituita da int e la seconda regola viene applicata.
- Se entrambi i valori sono enumerazioni, i loro tipi devono essere identici, e l'operatore sarà di tipo enumerazione.
Restrizioni per i tipi definiti-dall-utente (classi o strutture):
- I tipi devono essere identici o uno deve essere derivato derivato dall'altro.
- Se i tipi non sono identici (ereditarietà), allora il figlio è implicitamente castato al genitore, cioè l'operatore sarà di tipo genitore.
- Da non confondere l'oggetto ed il puntatore - entrambe le espressioni sono o oggetti o puntatori. NULL non può essere usato per il puntatore.
Nota
Fare attenzione quando si usa l'operatore condizionale come argomento di una funzione overloaded, perchè il tipo di risultato di un operatore condizionale è definito al momento della compilazione del programma. And this type is defined as the larger of the types "expression2" and "expression3".
Esempio:
void func(double d) { Print("argomento double: ",d); }
|
Vedi anche
Inizializzazione delle Variabili, Visibilità Ambito e Durata delle Variabili, Creazione ed Eliminazione di Oggetti