Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
C ha un operatore ternario: l'operatore conditional-expression (? :).
Sintassi
conditional-expression:
logical-OR-expression
logical-OR-expression
?
expression
:
conditional-expression
Deve logical-OR-expression avere un tipo integrale, mobile o puntatore. Viene valutato in termini di equivalenza a 0. Un punto di sequenza segue logical-OR-expression. La valutazione degli operandi procede nel modo seguente:
Se
logical-OR-expressionnon è uguale a 0,expressionviene valutato. Il risultato della valutazione dell'espressione viene fornito dall'oggetto non deterministicoexpression. Significa cheexpressionviene valutato solo selogical-OR-expressionè true.Se
logical-OR-expressionè uguale a 0,conditional-expressionviene valutato. Il risultato dell'espressione è il valore diconditional-expression. (Significa checonditional-expressionviene valutato solo selogical-OR-expressionè false).
L'effetto è, o expressionconditional-expression viene valutato, ma non entrambi.
Il tipo del risultato di un'operazione condizionale dipende dal tipo di expression operando o conditional-expression , come indicato di seguito:
Se
expressionoconditional-expressionha un tipo integrale o mobile (i relativi tipi possono essere diversi), l'operatore esegue le normali conversioni aritmetiche. Il tipo del risultato è il tipo degli operandi dopo la conversione.Se e
expressionconditional-expressionhanno la stessa struttura, unione o tipo di puntatore, il tipo del risultato è lo stesso tipo di struttura, unione o puntatore.Se entrambi gli operandi hanno tipo
void, il risultato ha il tipovoid.Se uno degli operandi è un puntatore a un oggetto di qualsiasi tipo e l'altro operando è un puntatore a
void, il puntatore all'oggetto viene convertito in un puntatore avoide il risultato è un puntatore avoid.expressionSe oconditional-expressionè un puntatore e l'altro operando è un'espressione costante con il valore 0, il tipo del risultato è il tipo di puntatore.
Nel confronto dei tipi per i puntatori qualsiasi qualificatore di tipo (const o volatile) nel tipo a cui i punti del puntatore sono insignificanti, ma il tipo di risultato eredita i qualificatori da entrambi i componenti dell'istruzione condizionale.
Esempi
Gli esempi seguenti illustrano gli usi dell'operatore condizionale:
j = ( i < 0 ) ? ( -i ) : ( i );
In questo esempio viene assegnato il valore assoluto di i a j. Se i è minore di 0, -i viene assegnato a j. Se i è maggiore o uguale a 0, i viene assegnato a j.
void f1( void );
void f2( void );
int x;
int y;
.
.
.
( x == y ) ? ( f1() ) : ( f2() );
In questo esempio vengono dichiarate due funzioni, f1 e f2, e due variabili x e y. Più avanti nel programma, se le due variabili hanno lo stesso valore, viene chiamata la funzione f1 . In caso contrario, f2 viene chiamato .