重複の可能性:
条件演算子を使用するにはどうすればよいですか?
私は C 言語が初めてで、レビューしていたサンプル コードの 1 つで、次のステートメントに直面しました。
A = A ? B: C[0]
前のステートメントのタスクが何であり、前述のステートメントを実行した後の結果はどうなるのだろうと思っていました。
重複の可能性:
条件演算子を使用するにはどうすればよいですか?
私は C 言語が初めてで、レビューしていたサンプル コードの 1 つで、次のステートメントに直面しました。
A = A ? B: C[0]
前のステートメントのタスクが何であり、前述のステートメントを実行した後の結果はどうなるのだろうと思っていました。
三項演算子と呼ばれます。true の場合、falseの場合をexpr ? a : b
返します。ブール式 (例: )、ブール値リテラル/変数、またはブール値にキャスト可能なもの (例: int) にすることができます。a
expr
b
expr
x > 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
。
ifが true、そうでなければA
の値に代入します。B
A
C[0]
result = a > b ? x : y;
は次のブロックと同じです:
if (a > b) {
result = x;
}
else
{
result = y;
}
if else
発言と同じです。
次のように書き換えることができます。
if ( A != 0 )
{
A = B;
}
else
{
A = C[ 0 ];
}
A が存在する (NULL でない) 場合、A は B に割り当てられます。それ以外の場合は C[0] になります。
A が 0 の場合、A = C[0] でなければ A = B