Operator warunkowy
Z Wikipedii
Operator warunkowy (ang. conditional operator) to konstrukcja programistyczna w językach które rozróżniają wyrażenia (expressions) od komend (statement), pozwalająca na sprawdzenie warunku na poziomie wyrażenia.
W C jest zapisywana jako warunek ? wyr1 : wyr2. Taką samą postać ma w takich językach jak C++, Java, C#, Perl i Ruby.
Przy spełnionym warunku zwracana jest wartość pierwszego wyrażenia, w przeciwnym razie - drugiego. Obliczana jest wartość tylko tego z wyrażeń, które zostało wybrane.
Dzięki temu rozróżnienie między wyrażeniami i komendami jest o wiele mniej istotne, niż w takich językach jak Pascal, i można pisać o wiele prostszy i bardziej zrozumiały kod.
Np.:
zmienna = warunek ? wyr1 : wyr2;
daje taki sam rezultat, co
if (warunek) then zmienna = wyr1 else zmienna = wyr2;
Bardziej skomplikowane przypadki wymagają duplikacji kodu lub użycia zmiennych tymczasowych, obniżając znacząco jego czytelność, np. poniższy przykład z Apache 2:
apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd : 0));
musiałby zostać zapisany jako:
if (maxfwd > 0) apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", maxfwd)); else apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", 0));
lub:
int tmp; if (maxfwd > 0) tmp = maxfwd; else tmp = 0; apr_table_set(r->headers_in, "Max-Forwards", apr_psprintf(r->pool, "%ld", tmp));
Języki nie rozróżniające wyrażeń i komend, takie jak języki funkcjonalne, mogą używać zwykłego if w tym celu i nie potrzebują osobnego operatora warunkowego.