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.