web-dev-qa-db-ja.com

条件演算子を使用するにはどうすればよいですか?

私はいつも"A ? B : C" C++互換言語の構文。

私はそれが次のように機能すると思います:(疑似コード)

If A > B
   C = A
Else
   C = B

ベテランのC++プログラマは私を助けてくれますか?

34
Robinicks

それはこのように動作します:

_(condition) ? true-clause : false-clause
_

他の用途もありますが、割り当て操作で最も一般的に使用されます。三項演算子_?_は、if-else句を短縮する方法であり、他の言語では即値ifステートメントとも呼ばれます(たとえば、VBではIIf(condition,true-clause,false-clause))。

例えば:

_bool Three = SOME_VALUE;
int x = Three ? 3 : 0;
_

と同じです

_bool Three = SOME_VALUE;
int x;
if (Three)
    x = 3;
else
    x = 0;
_
61
lc.

それはこのように動作します:

expression ? trueValue : falseValue

つまり、expressionがtrueと評価された場合、trueValueが返されるか実行され、そうでない場合はfalseValueが返されるか評価されます。

TrueValueおよびfalseValueは、式がそれぞれtrueまたはfalseの場合にのみ評価および実行されることに注意してください。この動作は短絡と呼ばれます。

12
magcius

C++では、これの実際の部分はありません。三項演算子と呼ばれます。これは次のように使用されます:<boolean statement>? <trueの場合の結果>:<falseの場合の結果>;上記の例では、次のようになります。

C = A > B ? A : B;

ウィキペディアに関するこの記事では、それについても説明しています: http://en.wikipedia.org/wiki/Ternary_operation

4
Mykroft

私はあなたがa = bのようなものを意味すると思いますか? c:d。bは条件、cはbがtrueの場合の値、dはbがfalseの場合の値です。

2
edef

条件付き演算子式の結果がC++ではL値になる可能性があることを誰も述べていないようです(ただし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
Robin Hsu

私は言うでしょうか?ショートカットです。ただし、一部の「ハードコア」プログラマーは、長い道のりでそれを書き出すと言う傾向があるため、将来のケースでは、人々は簡単にコードを読み取って変更できます。

たとえば、

int a = b<c ? b : c;

一部の人々は書く方がより明確であると主張します:

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

将来のケースでは、人々はそれを捕まえることができるからです。もちろん、単純なb <c? b:cは簡単に検出できますが、複雑な操作が行われる場合があり、見つけにくい場合があります。

1
Daniel

IT IS非常に単純なITの基本的な構文は次のとおりです:expression1?expression2:expression3;

式1が成立する場合、式2が成立し、そうでない場合、式3が成立します。

例:

hey=24>2?24:34;

ここでは条件が真であるため、24の値が割り当てられます。 falseの場合、34が割り当てられます

0
HARSH BAJPAI

単にこれを次のように書くことができます

C =(A> B)?A:B;

これIS同じ:

if(A>B)

 C=A;

else

 C=B;
0