Sdílet prostřednictvím


Operátor podmíněného výrazu

Jazyk C má jeden ternární operátor: operátor podmíněného výrazu (? :).      

Syntax

  • podmíněný výraz:
    výraz logické operace OR:

    výraz logické operace OR ? výraz : podmíněný výraz

Výraz logické operace OR musí mít integrální typ, typ s plovoucí řádovou čárkou nebo typ ukazatel.Je vyhodnocen na základě rovnosti nule.Následuje bod sekvence výrazu logické operace OR.Vyhodnocení operandů probíhá následujícím způsobem:

  • Není-li výraz logické operace OR roven nule, je výraz vyhodnocen.Výsledek vyhodnocení výrazu je dán neterminálním výrazem. (To znamená, že je výraz vyhodnocen pouze tehdy, pokud nabývá výraz logické operace OR hodnoty true.)

  • Rovná-li se výraz logické operace OR nule, je vyhodnocen podmíněný výraz.Výsledkem je výraz hodnoty podmíněného výrazu. (To znamená, že je podmíněný výraz vyhodnocen pouze tehdy, pokud nabývá výraz logické operace OR hodnoty false.)

Všimněte si, že vyhodnocen je buď výraz nebo podmíněný výraz nebo obojí.

Typ výsledky podmíněné operace závisí na typu výrazu nebo operace podmíněného výrazu následujícím způsobem:

  • Pokud má výraz nebo podmíněný výraz integrální typ nebo typ s plovoucí řádovou čárkou (jejich typy se mohou lišit), provádí operátor běžné aritmetické převody.Typ výsledku je po převodu typu operandu.

  • Pokud mají výraz a podmíněný výraz stejnou strukturu, sjednocení nebo typ ukazatele, je typem výsledku stejná struktura, sjednocení nebo typ ukazatele.

  • Pokud jsou oba operandy typu void, je výsledek typu void.

  • Pokud je operand ukazatel na objekt jakéhokoliv typu a druhý operandem je ukazatel na void, je ukazatel na objekt převeden na ukazatel na void a výsledkem je ukazatel na void.

  • Pokud je výraz nebo podmíněný výraz ukazatel a druhý operand je konstantní výraz s hodnotou 0, typem výsledku je typ ukazatele.

Při porovnání typů ukazatele jsou všechny kvalifikátory typu (const nebo volatile) v typu, na který směřuje ukazatel, nevýznamné, ale výsledný typ zdědí kvalifikátory z obou součásti podmínky.

Příklady

Následující příklady ukazují použití podmíněného operátoru:

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

Tento příklad přiřazuje absolutní hodnotu i k j.Pokud je i menší než 0, je -i přiřazeno k j.Pokud je i větší nebo rovno 0, je i přiřazeno k j.

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

V tomto příkladu jsou deklarovány dvě funkce, f1 a f2 a dvě proměnné, x a y.Mají-li, dále v programu, obě proměnné stejnou hodnotu, je zavolána funkce f1.Jinak je zavolána funkce f2.

Viz také

Referenční dokumentace

Podmíněný operátor: ? :