Udostępnij za pośrednictwem


Operator wyrażenia warunkowe

C posiada jeden operator trójargumentowy: operator wyrażenie warunkowe (? :).      

Składnia

  • wyrażenie warunkowe:
    wyrażenie logiczne lub

    wyrażenie logiczne lub ? wyrażenie : wyrażenie warunkowe

Wyrażenie logiczne lub musi mieć typ integralną, pływające lub wskaźnik.Zostanie ona potraktowana z punktu widzenia jej równoważności na 0.Punkt sekwencji podąża za wyrażenie logiczne lub.Ocena operandy postępuje w następujący sposób:

  • Jeśli wyrażenie logiczne lub nie jest równa 0, wyrażenie jest oceniane.Wynik oceny wyrażenie jest przedstawiana jako symboli nieterminalnych wyrażenie.(Oznacza to, wyrażenie jest oceniane tylko wtedy, gdy wyrażenie logiczne lub ma wartość true.)

  • Jeśli wyrażenie logiczne lub jest równa 0, wyrażenie warunkowe jest oceniane.Wynikiem wyrażenia jest wartość wyrażenie warunkowe.(Oznacza to, wyrażenie warunkowe jest oceniane tylko wtedy, gdy wyrażenie logiczne lub ma wartość false.)

Należy zauważyć, że albo wyrażenie lub wyrażenie warunkowe jest oceniana, ale nie obu.

Typ wyniku operacji warunkowych zależy od typu wyrażenie lub wyrażenie warunkowe operand w następujący sposób:

  • Jeśli wyrażenie lub wyrażenie warunkowe ma Całka lub ruchomy typ (typy ich mogą być różne), operator wykonuje zwykłe konwersje arytmetycznych.Typ wynik jest typu operandów po konwersji.

  • Jeśli oba wyrażenie i wyrażenie warunkowe tej samej strukturze, Unii lub typ wskaźnika, typ wyników jest ten sam typ struktury, Unii lub wskaźnik.

  • Jeśli oba operandy typu void, wynik ma typ void.

  • Jeśli albo operand jest wskaźnik do obiektu dowolnego typu i innych operand jest wskaźnik do void, wskaźnik do obiektu jest konwertowany na wskaźnik do void , a wynik jest wskaźnik do void.

  • Jeśli albo wyrażenie lub wyrażenie warunkowe jest wskaźnikiem i innych operand jest wyrażenie stałe o wartości 0, typ wyników jest typ wskaźnika.

Porównanie typu dla wskaźników, dowolny typ Kwalifikatory (const lub volatile) w polu Typ, do którego punktów wskaźnik są nieznaczne, ale typu wyniku dziedziczy kwalifikatory oba składniki warunkowego.

Przykłady

Poniższe przykłady pokazują zastosowań operator warunkowy:

j = ( i < 0 ) ? ( -i ) : ( i );

W tym przykładzie przypisuje wartość bezwzględna i do j.Jeśli i jest mniejsza niż 0, -i jest przypisany do j.Jeśli i jest większa niż lub równa 0, i jest przypisany do j.

void f1( void );
void f2( void );
int x;
int y;
    .
    .
    .
( x == y ) ? ( f1() ) : ( f2() );

W tym przykładzie dwie funkcje, f1 i f2, a dwie zmienne x i y, są zgłaszane.Później w programie, jeśli dwie zmienne mają tę samą wartość, funkcja f1 jest wywoływana.W przeciwnym razie f2 jest wywoływana.

Zobacz też

Informacje

Operator warunkowy:? :