Trivietis operatorius C Paaiškinta

Programuotojai sprendimų priėmimui naudoja trijų komponentų operatorių vietoj ilgesnių jei ir dar sąlyginių teiginių.

Trigubas operatorius pateikia tris argumentus:

  1. Pirmasis yra palyginimo argumentas
  2. Antrasis yra rezultatas, palyginus teisingai
  3. Trečiasis yra rezultatas klaidingai palyginus

Tai padeda mąstyti apie trinarį operatorių kaip apie trumpą būdą arba parašyti teiginį „jei būtų“. Štai paprastas sprendimų priėmimo pavyzdys, naudojant „ if and else“ :

int a = 10, b = 20, c; if (a < b) { c = a; } else { c = b; } printf("%d", c);

Šis pavyzdys užima daugiau nei 10 eilučių, bet tai nėra būtina. Aukščiau nurodytą programą galite parašyti tik 3 kodo eilutėmis, naudodamiesi trijų komponentų operatorių.

Sintaksė

condition ? value_if_true : value_if_false

Pareiškime įvertinama, value_if_truear conditionįvykdyta, ir value_if_falsekitaip.

Štai aukščiau pateiktas pavyzdys, perrašytas naudoti trijų komponentų operatorių:

int a = 10, b = 20, c; c = (a < b) ? a : b; printf("%d", c);

Aukščiau pateikto pavyzdžio rezultatas turėtų būti:

10

cyra lygus a, nes sąlyga a < bbuvo teisinga.

Atminkite, kad argumentai value_if_trueir value_if_falseturi būti to paties tipo, ir jie turi būti paprastos, o ne išsamūs teiginiai.

Ternariniai operatoriai gali būti įterpti taip pat, kaip ir jei „kiti“ teiginiai. Apsvarstykite šį 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);

Štai aukščiau pateiktas kodas perrašytas naudojant įdėtą trijų komponentų operatorių:

int a = 1, b = 2, ans; ans = (a == 1 ? (b == 2 ? 3 : 5) : 0); printf ("%d\n", ans);

Abiejų aukščiau nurodytų kodų rinkinių išvestis turėtų būti:

3