39

"A ? B : C"C++ 互換言語で構文を記述する方法を常に考えていました。

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

If A > B
   C = A
Else
   C = B

ベテランの C++ プログラマーが助けてくれませんか?

4

10 に答える 10

67

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

(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;
于 2008-12-25T16:34:48.797 に答える
12

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

expression ? trueValue : falseValue

これは基本的expressionに、true と評価された場合は trueValue が返されるか実行され、そうでない場合は falseValue が返されるか評価されることを意味します。

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

于 2008-12-25T16:32:43.467 に答える
4

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

C = A > B ? A : B;

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

于 2008-12-25T16:31:28.880 に答える
2

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

于 2008-12-25T16:31:04.983 に答える
1

私は?はショートカットです。しかし、一部の「筋金入りの」プログラマーは、将来的にコードを簡単に読んだり変更したりできるように、長い道のりを書き出すと言う傾向があります。

たとえば、次のように書くと

int a = b<c ? b : c;

次のように書く方がわかりやすいと主張する人もいます。

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

将来の場合、人々はそれを捕まえることができるからです。もちろん、単純な b<c ? b:c は簡単にキャッチできますが、複雑な操作が含まれている場合があり、見つけにくい場合があります。

于 2010-05-06T18:29:30.467 に答える
1

条件演算子式の結果が 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;
于 2014-09-18T02:19:47.700 に答える
0

これが私たちの条件です-> A?B:C したがって、条件に従って、「A」が真の場合は「B」を出力し、「A」が偽の場合は「C」を出力します。つまり、if else 条件の代替方法であるとも言えます。

于 2021-04-15T04:32:45.557 に答える