5

This may be a bonehead question, but I cannot figure out what the ? exp : other_exp sequence is called.

Example:

int result = (true) ? 1 : 0;

I've tried using the Google machine, but it's hard to Googilize for something without knowing what it's called.

Thanks!

4

2 に答える 2

19

これは、条件演算子または三項演算子 (3 つのオペランド (引数) を取る演算子) と呼ばれ、通常はこれが唯一の演算子であるため、これを行います。

インライン if (iif)、三項 if または疑問符演算子としても知られています。

これらはステートメントではなく式であるため、実際にはかなり便利な機能であり、したがって、たとえばconstexpr関数、代入などで使用できます。

C++ 構文は次のとおりです。

logical-or-expression ? expression : assignment-expression

次のように使用されます。

condition ? condition_is_true_expression : condition_is_false_expression

つまり、 が にcondition評価trueされるcondition_is_true_expression場合、式は に評価されます。それ以外の場合、式は に評価されcondition_is_false_expressionます。

したがって、あなたの場合、result常に value が割り当てられます1

注 1; 条件演算子を使用しているときによくある間違いは、演算子の優先順位がかなり低いことを忘れることです。

注 2; 'if...else'一部の関数型言語は、OCaml などの式構造を持っているため、この演算子を提供しません。

let value = if b then 1 else 2

注3; 完全に有効な面白い使用例は、条件演算子を使用して、2 つの変数のどちらに値を代入するかを決定することです。

(condition ? x : y) = 1;

これは実際には括弧なしで得られるものであるため、括弧が必要であることに注意してください。

condition ? x : (y = 1);
于 2013-09-05T14:24:17.247 に答える
2

それらはまたはと呼ばれshorthand if-elseますternary operators

詳細については、この記事を参照してください。

于 2013-09-05T14:25:50.990 に答える