Háromfázisú üzemeltető a C-ben magyarázva

Programozó használja a háromkomponensű üzemeltetője döntéshozatal helyett már ha és más feltételes utasítások.

A háromszintű üzemeltető három érvet fogalmaz meg:

  1. Az első egy összehasonlító érv
  2. A második a valódi összehasonlítás eredménye
  3. A harmadik a hamis összehasonlítás eredménye

Ez segít abban, hogy a ternáris operátort rövidírásként vagy ha-más utasítás megírásaként gondoljuk. Íme egy egyszerű döntéshozatali példa az if és más felhasználásával :

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

Ez a példa több mint 10 sort tartalmaz, de ez nem szükséges. A fenti programot csak három kódsorba írhatja egy háromszintű operátor segítségével.

Szintaxis

condition ? value_if_true : value_if_false

A nyilatkozat értékeli, value_if_truehogy conditionteljesül-e, és ha value_if_falsenem.

Íme a fenti példa, amelyet a háromszintű operátor használatára írtunk át:

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

A fenti példa eredményének a következőknek kell lennie:

10

cértéke egyenlő a, mert a feltétel a < bigaz volt.

Ne feledje, hogy az argumentumoknak value_if_trueés value_if_falseazonos típusúaknak kell lenniük, és egyszerű kifejezéseknek kell lenniük, nem pedig teljes állításoknak.

A háromszintű operátorok ugyanúgy beágyazhatók, mint az if-else utasítások. Vegye figyelembe a következő kódot:

int a = 1, b = 2, ans; if (a == 1) { if (b == 2) { ans = 3; } else { ans = 5; } } else { ans = 0; } printf ("%d\n", ans);

Itt van a fenti kód átírva egy beágyazott háromszintű operátorral:

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

A fenti kódkészletek kimenetének a következőknek kell lennie:

3