Objašnjen ternarni operater u C-u

Programeri koriste ternarni operator za donošenje odluka umjesto dužih uvjetnih izjava ako i inače .

Ternarni operator uzima tri argumenta:

  1. Prvi je argument usporedbe
  2. Drugi je rezultat istinske usporedbe
  3. 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_trueli conditionispunjeno i u value_if_falsesuprotnom.

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

cje postavljeno jednako a, jer je uvjet a < bbio istinit.

Zapamtite da argumenti value_if_truei value_if_falsemoraju 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