Как использовать условный оператор?
Я всегда задавался вопросом, как написать синтаксис "A ? B : C"
на языке, совместимом с C ++.
Я думаю, что это работает примерно так: (Псевдокод)
If A > B C = A Else C = B
Будет ли любой ветеран программист на C ++, пожалуйста, помогите мне?
- В C # почему оператор условного оператора неявно не вводится в тип с нулевым значением
- Тернарный оператор в два раза медленнее, чем блок if-else?
- Преимущества использования условного?: (Тройного) оператора
- Вызов метода с использованием тернарного оператора
- Почему тройной оператор неожиданно накладывает целые числа?
- Что такое оператор Java?: И что он делает?
- Как назначить Func условно между lambdaми, используя условный тернарный оператор?
- Неверный тип проблемы с?: Условный оператор
- C # элегантный способ проверить, является ли свойство свойства null
- Условные разности операторов между C и C ++
- Почему std :: istringstream выглядит по-разному в std :: ifstream в тройном (? :) операторе?
- Можно ли использовать тернарный / условный оператор Java (? :) для вызова методов вместо назначения значений?
- Что такое идиоматический эквивалент Go, эквивалентный тернарному оператору C?
Он работает следующим образом:
(condition) ? true-clause : false-clause
Он чаще всего используется в операциях присваивания, хотя он имеет и другие виды использования. Тернарный оператор ?
является способом сокращения предложения if-else и также называется IIf(condition,true-clause,false-clause)
непосредственного-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;
Он работает следующим образом:
expression ? trueValue : falseValue
В основном это означает, что если expression
оценивается как true, trueValue будет возвращено или выполнено, а falseValue будет возвращено или оценено, если нет.
Помните, что trueValue и falseValue будут оцениваться и выполняться только в том случае, если выражение истинно или false, соответственно. Такое поведение называется коротким замыканием.
В c ++ нет фактического, если часть этого. Это называется тернарным оператором. Он используется следующим образом:
C = A > B ? A : B;
Эта статья о википедии также обсуждает это: http://en.wikipedia.org/wiki/Ternary_operation
Я предполагаю, что вы имеете в виду такие вещи, как a = b? c: d, где b – условие, c – значение, когда b истинно, а d – значение, когда b является ложным.
Я бы сказал? это короткий отрезок. Тем не менее, некоторые «жесткие» программисты склонны говорить о том, что они издали долгий путь, поэтому в будущих случаях люди могут легко читать и модифицировать код.
Например, если вы пишете
int a = b
Некоторые люди утверждают, что яснее писать:
if(b
Потому что в будущих случаях люди могут его поймать. Конечно, простой b
Никто не упоминает, что результатом условного выражения оператора может быть L-значение в C ++ (но не в C). Следующий код компилируется на 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;
ЭТО БЫЛО БЫСТРОЕ ОСНОВНОЕ СИНТАКСИС: выражение1? Expression2: expression3;
Если выражение 1 верно, то выражение 2 будет выполняться иначе, если будет выполнено выражение 3.
пример:
hey=24>2?24:34;
здесь как условие истинное значение 24 будет присвоено ему. если оно было ложным, то ему будет присвоено 34
просто вы можете написать это как
С = (A> B) A: B;
ЭТО ТАК ЖЕ:
if(A>B) C=A; else C=B;