Programeri koriste ternarni operator za donošenje odluka umjesto dužih uvjetnih izjava ako i inače .
Ternarni operator uzima tri argumenta:
- Prvi je argument usporedbe
- Drugi je rezultat istinske usporedbe
- Treći je rezultat lažne usporedbe
Pomaže razmišljati o ternarnom operatoru kao o kratkom načinu ili pisanju if-else izjave. Evo jednostavnog primjera donošenja odluka koristeći if i else :
int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);
Ovaj primjer zauzima više od 10 redaka, ali to nije potrebno. Gornji program možete napisati u samo 3 retka koda pomoću ternarnog operatora.
Sintaksa
condition ? value_if_true : value_if_false
Izjava procjenjuje je value_if_true
li condition
ispunjeno i u value_if_false
suprotnom.
Evo gornjeg primjera prepisanog za upotrebu ternarnog operatora:
int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);
Rezultat gornjeg primjera trebao bi biti:
10
c
je postavljeno jednako a
, jer je uvjet a < b
bio istinit.
Zapamtite da argumenti value_if_true
i value_if_false
moraju biti iste vrste i moraju biti jednostavni izrazi, a ne cjeloviti iskazi.
Ternarni operatori mogu se ugnijezditi baš kao if-else izrazi. Razmotrite sljedeći kod:
int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);
Evo gornjeg koda prepisanog pomoću ugniježđenog ternarnog operatora:
int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);
Izlaz oba gornja skupa koda trebao bi biti:
3