Условное выражение
Conditional Expression
<------------------------>
(x < y) ? x : y
|_____| |________|
Test Conditional
Expression Operator
Символы '?' и ':' составляют условный оператор.
(В качестве раздражающего придирки: для некоторых Причина, несмотря на то, что вопрос касается оператора , большинство людей дает ответы об операторе .)
Во-первых, в вашем примере действительно есть ] заявление . Это называется оператором выражения . В C ++ есть различные типы операторов (оператор объявления, оператор перехода, оператор итерации и т. Д.), И этот оператор является оператором выражения. Итак, если ваш вопрос действительно о том, что это за оператор , педантично правильный ответ будет: это оператор выражения . Конец истории.
Теперь, во-вторых, если вы хотите пойти глубже, вы можете выделить выражение, которое используется в этом выражении. В этом случае выражение имеет условный оператор ?:
на верхнем уровне. Первый операнд этого оператора - это подвыражение, использующее реляционный оператор >
... и так далее.
Что такое эти утверждения в c ++ вызвал:
Вы задали вопрос с несколькими ответами. Технически это будет зависеть от фактического используемого языка, но то, что вы показали, очень типично для большого количества языков, имеющих общий синтаксис.
Заявления - это просто способ обозначить блок токенов, который можно рассматривать как единое целое. Заявления обычно заканчиваются точкой с запятой ";". Некоторые операторы просты, например
print 0;
, в котором есть одно ключевое слово и один литерал, в то время как другие более сложные, например
a = foo(c*10) + 5;
, в котором присваивание заключено в подвыражение возврата и арифметическое подвыражение, вызов функции с разрешением аргумента с участием подвыражения умножения с поиском переменной в качестве одного из операндов.
Ваше утверждение является результатом выражения.
testNumber > 1 ? true : false ;
==================================== ======================
expression that needs evaluated end-of-statement marker
Условный оператор иногда называют «тернарным оператором». У него есть оператор и три (следовательно, тернарные) операнды.
testNumber > 1 ? true : false
============== --- ===== --- ======
| | | | |
| | Exp2 | Exp3
| | |
| └ Operator ┘
|
Exp1 (which has to be a boolean expression)
Результаты Exp1 или Exp2 возвращаются как значение выражения условного оператора, Exp1, если «Condition» истинно, Exp2 в противном случае.
Условный (троичный) оператор может быть не так хорошо знаком кодировщикам по разным причинам.
Одно из его типичных применений - упрощение кода, когда мы хотим вернуть разные вещи на основе некоторого условия.
Например, для данного
a = 0;
b = 5;
мы можем легко вернуть результат деления в одну строку
return (a == 0) ? NaN : b/a; //Not-A-Number
Мы могли бы просто построить возврат с выражением
return (b/a);
, но мы хотим защитить себя от деления на ноль.Использование блока if / else привело бы к раздуванию кода.
if ( a == 0)
{
return NaN;
}
else
{
return b/a;
}
К троичному или не троичному?
Какой стиль кодирования вы используете для тернарного оператора?
Разумно ли это использование тернарного оператора?
Выражение a? b: c
оценивается как b
, если a
истинно, и c
, если a
является ложным
.
В большинстве языков это единственный пример тернарного оператора, который принимает три аргумента.
Это означает
//If this is true,
testNumber > 1
//testNumber is bigger than 1, then
true
//it is a true statemant, or
false
//else statement is faulse
или вы можете увидеть это так:
if(testNumber > 1) {
true
}
else {
false
}
Тернарный оператор. http://en.wikipedia.org/wiki/Ternary_operation
Тернарный оператор.
Ваше выражение предназначено для нахождения того, является ли значение истинным или ложным. Например,
boolean c = testNumber > 1 ? true : false;
Здесь, исходя из значения testNumber, c будет true или false.
Это выражение с тернарным (или условным) оператором в нем.