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.