「?」 C ++で行いますか?
-
18-09-2019 - |
質問
int qempty()
{
return (f == r ? 1 : 0);
}
上記のスニペットでは、「?" 平均?それを何に置き換えることができますか?
解決
これは一般に次のように呼ばれています 条件演算子, そして次のように使用すると:
condition ? result_if_true : result_if_false
...もし condition
と評価される true
, 、式は次のように評価されます。 result_if_true
, 、それ以外の場合は次のように評価されます。 result_if_false
.
それは 糖衣構文, この場合、次のように置き換えることができます。
int qempty()
{
if(f == r)
{
return 1;
}
else
{
return 0;
}
}
注記: 参考にする人もいます ?:
それを「」として三項演算子"、これが唯一の三項演算子であるためです (つまり、3 つの引数を取る演算子) を使用している言語で記述します。
他のヒント
これは三項演算子であり、基本的にはインライン if ステートメントです。
x ? y : z
のように機能します
if(x) y else z
ただし、ステートメントの代わりに式を使用します。したがって、より複雑なステートメントの途中で使用できます。
これは簡潔なコードを書くのに便利ですが、保守が難しいコードを作成するために多用される可能性があります。
次のように書き換えることができます。
int qempty(){ return(f==r);}
これは他の回答で述べたのと同じことを行います。
それは条件演算子です。
?b :c
IF/THEN/ELSEのショートカットです。
手段:a が true の場合は b を返し、そうでない場合は c を返します。この場合、f==r の場合は 1 を返し、それ以外の場合は 0 を返します。
これを見た場合は、次の点に注意してください。
a = x ? : y;
これは標準に対する GNU 拡張です (「 https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals).
それは同じです
a = x ? x : y;
疑問符は条件演算子です。このコードは、f==r の場合は 1 が返され、それ以外の場合は 0 が返されることを意味します。コードは次のように書き換えることができます
int qempty()
{
if(f==r)
return 1;
else
return 0;
}
これはおそらく最もきれいな方法ではありませんが、理解に役立つことを願っています。