Wie verwende ich den bedingten (ternären) Operator?

Lesezeit: 2 Minuten

Wie verwende ich den bedingten ternaren Operator
Robin Rodricks

Ich habe mich immer gefragt, wie man das schreibt "A ? B : C" Syntax in einer C++-kompatiblen Sprache.

Ich denke, es funktioniert ungefähr so: (Pseudocode)

If A > B
   C = A
Else
   C = B

Kann mir bitte ein erfahrener C++-Programmierer helfen?

1646981407 207 Wie verwende ich den bedingten ternaren Operator
lc.

Es funktioniert so:

(condition) ? true-clause : false-clause

Es wird am häufigsten in Zuweisungsoperationen verwendet, obwohl es auch andere Verwendungen hat. Der ternäre Operator ? ist eine Möglichkeit, eine if-else-Klausel abzukürzen, und wird in anderen Sprachen auch als unmittelbare if-Anweisung bezeichnet (IIf(condition,true-clause,false-clause) in VB zum Beispiel).

Zum Beispiel:

bool Three = SOME_VALUE;
int x = Three ? 3 : 0;

ist das gleiche wie

bool Three = SOME_VALUE;
int x;
if (Three)
    x = 3;
else
    x = 0;

  • Wenn x in Ihren Beispielen eine Konstante int wäre, wäre die ternäre Version die einzige Option, die kompiliert wird.

    – Drew Dormann

    25. Dezember 2008 um 21:48 Uhr

  • Wäre es nicht besser, Drei zu initialisieren?

    – Jonathan Leffler

    26. Dezember 2008 um 7:41 Uhr

  • Shmoopty – Sehr wahr, denn Sie können eine Konstante nur initialisieren, wenn sie deklariert ist. Jonathan – Ja, ja, das würde es. Bearbeitet. Vielleicht hätte ich stattdessen “//Three is a bool” machen sollen.

    – lc.

    26. Dezember 2008 um 8:18 Uhr

Es funktioniert so:

expression ? trueValue : falseValue

Was im Grunde bedeutet, dass wenn expression zu true ausgewertet wird, wird trueValue zurückgegeben oder ausgeführt, und falseValue wird zurückgegeben oder ausgewertet, wenn dies nicht der Fall ist.

Denken Sie daran, dass trueValue und falseValue nur dann ausgewertet und ausgeführt werden, wenn der Ausdruck wahr bzw. falsch ist. Dieses Verhalten wird als Kurzschluss bezeichnet.

In c++ gibt es keinen tatsächlichen if-Teil davon. Er wird als ternärer Operator bezeichnet. Es wird wie folgt verwendet: ? : ; Für dein obiges Beispiel würde das so aussehen:

C = A > B ? A : B;

Dieser Artikel auf Wikipedia diskutiert es auch:
http://en.wikipedia.org/wiki/Ternary_operation

Ich nehme an, du meinst Sachen wie a = b ? c : d, wobei b die Bedingung ist, c der Wert ist, wenn b wahr ist, und d der Wert ist, wenn b falsch ist.

ich würde sagen die ? ist eine Abkürzung. Einige “Hard-Core”-Programmierer neigen jedoch dazu zu sagen, schreiben Sie es auf lange Sicht, damit die Leute in zukünftigen Fällen Code leicht lesen und ändern können.

Zum Beispiel, wenn Sie schreiben

int a = b<c ? b : c;

Einige Leute behaupten, es sei klarer zu schreiben:

if(b<c)
 a = b;
else
 a = c;

Denn in zukünftigen Fällen können sich Menschen damit anstecken. Natürlich ist ein einfaches b

  • Ihr Beispiel ist das einfachste für typische Anwendungsfälle. Der korrekte Begriff ist “ternäre Operatoren”, und sie sind sehr einfach zu verstehen und verwenden in vielen Sprachen eine ähnliche Syntax. In R wäre zum Beispiel die gleiche Aussage a = ifelse(b<c, b, c). In PHP wäre es $a = ($b<$c) ? b : c;. Ich würde ternäre Operatoren für einfache Fälle bevorzugen, wie z. B. einzeilige Anweisungen. Für mehrzeilige Anweisungen würde ich den traditionellen Weg für eine sauberere logische Struktur verwenden.

    – Adam Erickson

    9. März 2018 um 5:36 Uhr


1646981407 168 Wie verwende ich den bedingten ternaren Operator
Robin Hsu

Niemand scheint zu erwähnen, dass ein Ergebnis eines Bedingungsoperatorausdrucks ein L-Wert in C++ sein kann (aber nicht in C). Der folgende Code lässt sich in C++ kompilieren und läuft gut:

    int a, b;
    bool cond;
    a=1; b=2; cond=true;
    (cond? a : b) = 3;
    cout << a << "," << b << endl;

Das obige Programm gibt 3, 2 aus

Wenn a und b jedoch von unterschiedlichem Typ sind, wird es nicht funktionieren. Der folgende Code gibt einen Compilerfehler aus:

    int a;
    double b;
    bool cond;
    a=1; b=2; cond=true;
    (cond? a : b) = 3;
    cout << a << "," << b << endl;

  • Ihr Beispiel ist das einfachste für typische Anwendungsfälle. Der korrekte Begriff ist “ternäre Operatoren”, und sie sind sehr einfach zu verstehen und verwenden in vielen Sprachen eine ähnliche Syntax. In R wäre zum Beispiel die gleiche Aussage a = ifelse(b<c, b, c). In PHP wäre es $a = ($b<$c) ? b : c;. Ich würde ternäre Operatoren für einfache Fälle bevorzugen, wie z. B. einzeilige Anweisungen. Für mehrzeilige Anweisungen würde ich den traditionellen Weg für eine sauberere logische Struktur verwenden.

    – Adam Erickson

    9. März 2018 um 5:36 Uhr


Wie verwende ich den bedingten ternaren Operator
HARTER BAJPAI

ES IST GANZ EINFACH. ES IST DIE BASISSYNTAX: Ausdruck1?Ausdruck2:Ausdruck3;

Wenn Ausdruck 1 wahr ist, gilt Ausdruck 2, andernfalls gilt Ausdruck 3.

Beispiel:

hey=24>2?24:34;

hier, da die Bedingung wahr ist, wird ihr der Wert 24 zugewiesen. Wenn es falsch war, wird ihm 34 zugewiesen

990130cookie-checkWie verwende ich den bedingten (ternären) Operator?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy