ternary conditional operator
Főnév
ternary conditional operator (tsz. ternary conditional operators)
- (informatika) A ternary (hármas) feltételes operátor C++ nyelvben egy rövidített forma az if-else kifejezésre. Gyakran használják egyszerű feltételek kiértékelésére és értékadásra egyetlen sorban.
1. Az alap szintaxis
A ternary operátor így néz ki:
feltétel ? igaz_érték : hamis_érték;
Itt: - feltétel – egy logikai kifejezés, amely kiértékelésre kerül. - igaz_érték – ha a feltétel igaz (true), ezt az értéket veszi fel a kifejezés. - hamis_érték – ha a feltétel hamis (false), ezt az értéket veszi fel a kifejezés.
2. Egyszerű példa
Hagyományos if-else használat:
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 20;
int nagyobb;
if (x > y)
nagyobb = x;
else
nagyobb = y;
cout << "A nagyobb szám: " << nagyobb << endl;
return 0;
}
Ternary operátorral ugyanez:
#include <iostream>
using namespace std;
int main() {
int x = 10, y = 20;
int nagyobb = (x > y) ? x : y;
cout << "A nagyobb szám: " << nagyobb << endl;
return 0;
}
Látható, hogy a kód tömörebb és átláthatóbb lett.
3. Többszörös feltételek kezelése
A ternary operátor egymásba ágyazható. Példa:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20, c = 30;
int max = (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
cout << "A legnagyobb szám: " << max << endl;
return 0;
}
Ez a kód három szám közül a legnagyobbat határozza meg. Ha a nagyobb b-nél, akkor még c-vel is összehasonlítja, és eldönti, hogy a vagy c a legnagyobb. Ha b nagyobb a-nál, akkor b és c közül választja ki a legnagyobbat.
4. Ternary operátor változó inicializálásra
Példa:
int szam = 5;
string eredmeny = (szam % 2 == 0) ? "Páros" : "Páratlan";
cout << eredmeny;
Ez a program eldönti, hogy egy szám páros vagy páratlan, és az eredményt egy string változóban tárolja.
5. Ternary operátor függvény visszatérési értékében
Használható függvény visszatérési értékének meghatározására:
#include <iostream>
using namespace std;
string paritas(int szam) {
return (szam % 2 == 0) ? "Páros" : "Páratlan";
}
int main() {
int x = 7;
cout << x << " -> " << paritas(x) << endl;
return 0;
}
6. Ternary operátor logikai értékekkel
Ha egy logikai változót szeretnénk egy másikhoz rendelni:
bool feltetel = true;
string uzenet = feltetel ? "Elfogadva" : "Elutasítva";
cout << uzenet;
Ha a feltetel true, akkor “Elfogadva”, egyébként “Elutasítva” lesz az érték.
7. Hátrányai és korlátai
Nehezen olvasható, ha túl komplex
Ha túl sok ágyazott ternary operátor van, a kód olvashatatlanná válik. Példa egy kerülendő kódra:string eredmeny = (a > b) ? ((a > c) ? "A" : "C") : ((b > c) ? "B" : "C");
Helyette jobb egy normál
if-elseszerkezetet használni.Csak egyszerű kifejezésekre ajánlott
Nem használható komplex logikai műveletek helyett.Bizonyos helyzetekben a teljesítmény csökkenhet
Ha az igaz és hamis ágak bonyolult műveleteket tartalmaznak, a ternary operátor nem mindig hatékony.
8. Ternary operátor és pointerek
Lehet pointerekkel is használni:
int a = 10, b = 20;
int* ptr = (a > b) ? &a : &b;
cout << "A nagyobbik cím: " << ptr << ", érték: " << *ptr;
Itt a ptr a nagyobb szám memóriacímét fogja tárolni.
9. Alternatíva: if constexpr (C++17)
C++17-től van egy alternatíva az if constexpr segítségével:
constexpr int max(int a, int b) {
return (a > b) ? a : b;
}
Ez fordítási időben kiértékelődik, így hatékonyabb lehet bizonyos esetekben.
10. Összegzés
- A ternary operátor egy rövidített forma az
if-elseszerkezetre. - Fő szintaxis:
feltétel ? igaz_érték : hamis_érték; - Egyszerű, tömör kódot eredményez, de túlzott használata nehezíti az olvashatóságot.
- Legjobb egy soros értékadásokhoz és egyszerű feltételekhez.
- Kerülendő, ha több ágyazott feltétel szükséges, mert a kód átláthatatlanná válhat.
- Pointerekkel és logikai értékekkel is jól használható.
- ternary conditional operator - Szótár.net (en-hu)
- ternary conditional operator - Sztaki (en-hu)
- ternary conditional operator - Merriam–Webster
- ternary conditional operator - Cambridge
- ternary conditional operator - WordNet
- ternary conditional operator - Яндекс (en-ru)
- ternary conditional operator - Google (en-hu)
- ternary conditional operator - Wikidata
- ternary conditional operator - Wikipédia (angol)