int qempty()
{
return (f == r ? 1 : 0);
}
上記のスニペットでは、「?はどういう意味ですか?何に置き換えることができますか?
これは一般的に conditional operator と呼ばれ、次のように使用される場合:
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;
}
}
注:一部の人々は?:
itを「三項演算子」、使用している言語で唯一の三項演算子(3つの引数を取る演算子)であるため。
これは三項演算子であり、基本的にインラインifステートメントです。
x ? y : z
のように動作します
if(x) y else z
ただし、ステートメントの代わりに式があります。そのため、より複雑なステートメントの途中で使用できます。
簡潔なコードを書くのに便利ですが、保守しにくいコードを作成するために使いすぎる可能性があります。
それは条件演算子です。
? 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;
}
これはおそらく最もクリーンな方法ではありませんが、うまくいけば理解に役立つでしょう。