私はいつも"A ? B : C"
C++互換言語の構文。
私はそれが次のように機能すると思います:(疑似コード)
If A > B
C = A
Else
C = B
ベテランのC++プログラマは私を助けてくれますか?
それはこのように動作します:
_(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;
_
それはこのように動作します:
expression ? trueValue : falseValue
つまり、expression
がtrueと評価された場合、trueValueが返されるか実行され、そうでない場合はfalseValueが返されるか評価されます。
TrueValueおよびfalseValueは、式がそれぞれtrueまたはfalseの場合にのみ評価および実行されることに注意してください。この動作は短絡と呼ばれます。
C++では、これの実際の部分はありません。三項演算子と呼ばれます。これは次のように使用されます:<boolean statement>? <trueの場合の結果>:<falseの場合の結果>;上記の例では、次のようになります。
C = A > B ? A : B;
ウィキペディアに関するこの記事では、それについても説明しています: http://en.wikipedia.org/wiki/Ternary_operation
私はあなたがa = bのようなものを意味すると思いますか? c:d。bは条件、cはbがtrueの場合の値、dはbがfalseの場合の値です。
条件付き演算子式の結果が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;
私は言うでしょうか?ショートカットです。ただし、一部の「ハードコア」プログラマーは、長い道のりでそれを書き出すと言う傾向があるため、将来のケースでは、人々は簡単にコードを読み取って変更できます。
たとえば、
int a = b<c ? b : c;
一部の人々は書く方がより明確であると主張します:
if(b<c)
a = b;
else
a = c;
将来のケースでは、人々はそれを捕まえることができるからです。もちろん、単純なb <c? b:cは簡単に検出できますが、複雑な操作が行われる場合があり、見つけにくい場合があります。
IT IS非常に単純なITの基本的な構文は次のとおりです:expression1?expression2:expression3;
式1が成立する場合、式2が成立し、そうでない場合、式3が成立します。
例:
hey=24>2?24:34;
ここでは条件が真であるため、24の値が割り当てられます。 falseの場合、34が割り当てられます
単にこれを次のように書くことができます
C =(A> B)?A:B;
これIS同じ:
if(A>B)
C=A;
else
C=B;