Как использовать условный оператор?

Я всегда задавался вопросом, как написать синтаксис "A ? B : C" на языке, совместимом с С++.

Я думаю, что это работает примерно так: (Псевдокод)

If A > B
   C = A
Else
   C = B

Будет ли любой ветеран программист на С++, пожалуйста, помогите мне?

Ответ 1

Он работает следующим образом:

(condition) ? true-clause : false-clause

Он чаще всего используется в операциях присваивания, хотя он имеет и другие виды использования. Тернарный оператор ? является способом сокращения предложения if-else и также называется операцией непосредственного-if на других языках (IIf(condition,true-clause,false-clause) в VB, например).

Например:

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

совпадает с

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

Ответ 2

Он работает следующим образом:

expression ? trueValue : falseValue

В основном это означает, что если expression оценивается как true, trueValue будет возвращен или выполнен, а falseValue будет возвращен или оценен, если нет.

Помните, что trueValue и falseValue будут оцениваться и выполняться только в том случае, если выражение истинно или false, соответственно. Это поведение называется коротким замыканием.

Ответ 3

В С++ нет фактической, если это часть. Он назывался тернарным оператором. Он используется следующим образом: < boolean statement > ? < result, если true > : < result if false > ; Для вашего примера выше это будет выглядеть так:

C = A > B ? A : B;

В этой статье о википедии также обсуждаются: http://en.wikipedia.org/wiki/Ternary_operation

Ответ 4

Я предполагаю, что вы имеете в виду такие вещи, как a = b? c: d, где b - условие, c - значение, когда b истинно, а d - значение, когда b является ложным.

Ответ 5

Я бы сказал? это короткий отрезок. Тем не менее, некоторые "жесткие" программисты, как правило, говорят, что они записывают длинный путь, поэтому в будущих случаях люди могут легко читать и изменять код.

Например, если вы пишете

int a = b<c ? b : c;

Некоторые люди утверждают, что яснее писать:

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

Потому что в будущих случаях люди могут его поймать. Конечно, простой b < c? b: c легко поймать, но иногда возникают сложные операции, и их трудно обнаружить.

Ответ 6

Никто не упоминает, что результатом условного операторного выражения может быть L-значение в С++ (но не в C). Следующий код компилируется на С++ и работает хорошо:

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

Вышеупомянутая программа печатает 3, 2

Однако, если a и b имеют разные типы, это не сработает. Следующий код дает ошибку компилятора:

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

Ответ 7

ЭТО БЫЛО ПРОСТО ЭТО ОСНОВНОЕ СИНТАКСИС: ? Выражение1 выражения2: expression3;

Если выражение 1 верно, то выражение 2 будет выполняться иначе, если будет выполняться выражение 3.

Пример:

hey=24>2?24:34;

здесь, поскольку условию будет присвоено истинное значение 24. если он был ложным, тогда ему будет присвоено 34

Ответ 8

просто вы можете написать это как

С = (а > В): В;

ЭТО ТАК ЖЕ:

if(A>B)

 C=A;

else

 C=B;