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

Z Wikipedie, otevřené encyklopedie
(Přesměrováno z ?:)
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ů „?:“.

Obsah

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

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

[editovat] „?:“

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.

[editovat] Specifika C++

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

[editovat] Další varianty

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;

[editovat] Reference

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

  1. http://latrine.dgx.cz/php-puvab-optimalizace-rychlosti

[editovat] Související články

Osobní nástroje
Jmenné prostory

Varianty
Akce
Navigace
Tisk/export
Nástroje
V jiných jazycích