6

重複の可能性:
条件演算子を使用するにはどうすればよいですか?

私は C 言語が初めてで、レビューしていたサンプル コードの 1 つで、次のステートメントに直面しました。

A = A ? B: C[0]

前のステートメントのタスクが何であり、前述のステートメントを実行した後の結果はどうなるのだろうと思っていました。

4

6 に答える 6

14

三項演算子と呼ばれます。true の場合、falseの場合をexpr ? a : b返します。ブール式 (例: )、ブール値リテラル/変数、またはブール値にキャスト可能なもの (例: int) にすることができます。aexprbexprx > 3

int ret = expr ? a : b以下と同等です。

int ret;
if (expr) ret = a;
else ret = b;

三項演算子の良いところは、それが式であることです。一方、上記はステートメントであり、式をネストすることはできますが、ステートメントをネストすることはできません。だからあなたは次のようなことができますret = (expr ? a : b) > 0;

おまけとして、Python >=2.6 では、同等の操作の構文がわずかに異なりますa if expr else b

于 2010-11-25T11:16:54.043 に答える
4

ifが true、そうでなければAの値に代入します。BAC[0]

?:

于 2010-11-25T11:15:22.373 に答える
3

result = a > b ? x : y;は次のブロックと同じです:

if (a > b) {
  result = x;
}
else
{
  result = y;
}
于 2010-11-25T11:17:44.307 に答える
3

if else発言と同じです。

次のように書き換えることができます。

if ( A != 0 )
{
    A = B;
}
else
{
    A = C[ 0 ];
}
于 2010-11-25T11:18:33.540 に答える
1

A が存在する (NULL でない) 場合、A は B に割り当てられます。それ以外の場合は C[0] になります。

于 2010-11-25T11:16:34.763 に答える
1

A が 0 の場合、A = C[0] でなければ A = B

于 2010-11-25T11:19:33.627 に答える