int qempty()
{
return (f == r ? 1 : 0);
}
上記のスニペットで、「?」はどういう意味ですか?何に置き換えることができますか?
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つの引数を取る演算子)であるため、「三項演算子」?:
と呼ぶ人もいます。
a? b : c
構文糖衣を検討できます[&]() -> Type { if (a) return b; else return c; }()
。
これは三項演算子であり、基本的にインラインのifステートメントです。
x ? y : z
のように動作します
if(x) y else z
ただし、ステートメントの代わりに式があります。したがって、より複雑なステートメントの途中で使用できます。
簡潔なコードを書くのに役立ちますが、保守が難しいコードを作成するために使いすぎる可能性があります。
次のように書き直すことができます。
int qempty(){ return(f==r);}
これは他の回答で述べたのと同じことをします。
これを見たことがあれば、注意してください:
a = x ? : y;
これは標準のGNU拡張です(https://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionalsを参照)。
と同じです
a = x ? x : y;
x = 1+1 ? : 0
。2
私のコンパイラでは正しく戻りますが 、これは何も文句を言いませんでした。