Ternární operátor (programování)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Ternární operátor je operátor některých programovacích a skriptovacích jazyků, jako například C, C++, Java, PHP a dalších. Má aritu operace rovnou třem. Nejpoužívanější ternární operátor při programování je operátor pro podmíněný výraz, který se nejčastěji zapisuje pomocí znaků „?:“.

Operátor pro podmíněný výraz[editovat | editovat zdroj]

Operátor pro podmíněný výraz se nejčastěji používá pro zkrácení zápisu vyhodnocení podmínky.

„?:“[editovat | editovat zdroj]

Tradiční jazykový konstrukt if-else se v jazycích, které syntaxí vychází z jazyka C (například C++, C#, Vala, Objective-C, Java, JavaScript nebo ActionScript) se zapisuje následovně:

if (podmínka) {
    výraz1;
}
else {
    výraz2;
}

Pomocí operátoru pro podmíněný výraz je možné tento zápis zkrátit:

podmínka ? výraz1 : výraz2;

Postup zpracování je takovýto:

  1. Vyhodnotí se podmínka.
  2. Je-li podmínka nenulová (true), vyhodnotí se výraz1 a ten bude výsledkem celé operace.
  3. Je-li podmínka nulová (false), vyhodnotí se výraz2 a ten bude výsledkem celé operace.

Některé jazyky před zpracováním ternárního operátoru vyhodnocují oba výrazy, takže, pokud jsou tyto výrazy náročné na výpočetní čas nebo prostředky, je lepší provést samotné vyhodnocení opisně, pomocí podmíněného vykonání kódu.[1] Operátor ?: má asociativitu zprava doleva.

Specifika C++[editovat | editovat zdroj]

V C++ vytváří l-hodnotu, pokud jsou výraz1 i výraz2 l-hodnoty. Operátor ?: v jazyce C++ nelze přetížit.

Další varianty[editovat | editovat zdroj]

V jazyce CPL, který je předchůdcem jazyka C a kde se operátor poprvé objevil se zapisoval jako e1e2, e3.

V jazyce Perl 6 se operátor zapisuje pomocí znaků „??!!“:

podmínka ?? výraz1 !! výraz2;

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Ternary_operation na anglické Wikipedii.

  1. http://phpfashion.com/php-puvab-optimalizace-rychlosti

Související články[editovat | editovat zdroj]