"A ? B : C"C++ 互換言語で構文を記述する方法を常に考えていました。
次のように機能すると思います:(疑似コード)
If A > B
C = A
Else
C = B
ベテランの C++ プログラマーが助けてくれませんか?
"A ? B : C"C++ 互換言語で構文を記述する方法を常に考えていました。
次のように機能すると思います:(疑似コード)
If A > B
C = A
Else
C = B
ベテランの C++ プログラマーが助けてくれませんか?
それはこのように動作します:
(condition) ? true-clause : false-clause
代入操作で最も一般的に使用されますが、他の用途もあります。三項演算子は、if-else 句を短縮する方法であり、他の言語 ( VB など) では?即時 if ステートメントとも呼ばれます。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++ では、この部分に実際の if はありません。三項演算子といいます。次のように使用されます: <boolean statement> ? <真の場合の結果> : <偽の場合の結果>; 上記の例では、次のようになります。
C = A > B ? A : B;
ウィキペディアのこの記事でもそれについて説明しています: http://en.wikipedia.org/wiki/Ternary_operation
a = b のようなものを意味していると思いますか?c : d。ここで、b は条件、c は b が true の場合の値、d は b が false の場合の値です。
私は?はショートカットです。しかし、一部の「筋金入りの」プログラマーは、将来的にコードを簡単に読んだり変更したりできるように、長い道のりを書き出すと言う傾向があります。
たとえば、次のように書くと
int a = b<c ? b : c;
次のように書く方がわかりやすいと主張する人もいます。
if(b<c)
a = b;
else
a = c;
将来の場合、人々はそれを捕まえることができるからです。もちろん、単純な b<c ? b:c は簡単にキャッチできますが、複雑な操作が含まれている場合があり、見つけにくい場合があります。
条件演算子式の結果が 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;
これが私たちの条件です-> A?B:C したがって、条件に従って、「A」が真の場合は「B」を出力し、「A」が偽の場合は「C」を出力します。つまり、if else 条件の代替方法であるとも言えます。