Wyrażenie trójargumentowe w C++

Wyrażenie trójargumentowe w C++ to skrócona forma instrukcji warunkowej, która pozwala na wybór między dwoma wartościami w zależności od wartości logicznej wyrażenia. Jest to jedyny operator w C++, który przyjmuje trzy operandy i jest często nazywany operatorem warunkowym lub ternarnym. Składnia:
warunek ? wyrażenie1 : wyrażenie2;
Jeśli warunek jest prawdziwy (true), wynikiem wyrażenia jest wyrażenie1. W przeciwnym razie, jeśli warunek jest fałszywy (false), wynikiem jest wyrażenie2.

Przykłady:

Podstawowe użycie wyrażenia trójargumentowego:
int a = 10, b = 5;
int max = (a > b) ? a : b;
cout << "Większa liczba to: " << max << endl;
W tym przykładzie, jeśli a jest większe od b, max zostanie zainicjalizowane wartością a, w przeciwnym razie max otrzyma wartość b. Wyrażenie trójargumentowe w wyrażeniu cout:
bool deszcz = true;
cout << (deszcz ? "Weź parasol." : "Nie potrzebujesz parasola.") << endl;
W zależności od wartości deszcz, wyświetlony zostanie odpowiedni komunikat. Zagnieżdżone wyrażenie trójargumentowe:
int x = 10, y = 20, z = 15;
int max = (x > y) ? ((x > z) ? x : z) : ((y > z) ? y : z);
cout << "Największa liczba to: " << max << endl;
W tym przykładzie, wyrażenie trójargumentowe jest zagnieżdżone, aby znaleźć największą liczbę spośród x, y, i z. Użycie do przypisania różnych typów danych:
int warunek = 1;
auto wynik = (warunek == 1) ? "Warunek spełniony" : "Warunek niespełniony";
cout << wynik << endl;
Uwaga: W tym przypadku oba wyrażenia po ? i : muszą być tego samego typu lub muszą istnieć jasne reguły konwersji między nimi. Wyrażenie trójargumentowe w return funkcji:
int absValue(int n) {
    return (n < 0) ? -n : n;
}
Funkcja zwraca wartość bezwzględną liczby n używając wyrażenia trójargumentowego.

Zalety i Wady

Zalety:
  • Zwięzłość: Pozwala na zapisanie prostych instrukcji warunkowych w jednej linii, co może poprawić czytelność kodu w przypadku prostych warunków.
  • Wydajność: W niektórych przypadkach może być minimalnie szybsze od instrukcji warunkowych, chociaż różnica jest zazwyczaj znikoma.
Wady:
  • Czytelność: Zagnieżdżanie wielu wyrażeń trójargumentowych może szybko stać się trudne do zrozumienia i utrzymywania, zwłaszcza dla bardziej złożonych warunków.
  • Ograniczona elastyczność: Może być używane tylko do prostych wyborów bazujących na jednym warunku; nie nadaje się do złożonych instrukcji warunkowych z wieloma ścieżkami wykonania.
Wyrażenie trójargumentowe jest potężnym narzędziem w języku C++, które, używane z rozwagą, może przyczynić się do tworzenia bardziej zwięzłego i eleganckiego kodu.