次のように、Cの三項演算子内でreturnキーワードを使用できないのはなぜですか:sum> 0? 1を返す:0を返す;
return
はステートメントです。ステートメントは、そのように式内で使用することはできません。
三項演算は式であり、式でステートメントを使用できないためです。
ただし、リターンでは三項演算子を簡単に使用できます。
return sum > 0 ? 1 : 0;
またはDrDipShitが指摘したように:
return sum > 0;
三項演算子は式を扱いますが、return
はステートメントです。
return
ステートメントの構文は次のとおりです。
return
expr;
三項条件演算子の構文は次のとおりです。
expr1?
expr2:
expr
したがって、三項演算子の呼び出しをreturn
ステートメントのexprとしてプラグインできます。ただし、return
ステートメントを三項演算子のexpr2またはexprとしてプラグインすることはできません。
三項式はif
ステートメントのように機能しますが、if
ステートメントの正確な置き換えではありません。書きたいなら
if(sum > 0)
return 1;
else return 0;
真のif
ステートメントとして記述できますが、ここで見たように、少し再配置せずに? :
を使用するように変換することはできません。
return
はステートメントであり、式ではないためです。できませんint a = return 1;
どちらか。
return
ステートメントはfunction
から戻るために使用され、三項演算子の内部では使用できません。
(1==1)? return 1 : return 0; /* can't use return inside ternary operator */
あなたはそれを好きにすることができます
return (1==1) ? 1 : 0;
三項演算子の構文は次のようになります。
expr1 ? expr2 : expr3;
どこ expr1
、expr2
、expr3
は式であり、return
はステートメントであり、式ではありません。
三項演算子の構文を参照してください。
expr1 ? expr2: expr3;
どこ expr1
、expr2
、expr3
は式です。
オペレーター ?:
は次のように機能しますexpr1
が真の場合、最初に評価されますexpr2
それ以外の場合は評価されますexpr3
が評価されます。
したがって、式ではreturnステートメントをC言語で使用することはできません。
構文を見るだけで、ステートメントを式で使用できないことがわかります。あなたが望むことは、次のことによって達成することができます:return sum > 0 ? 1 : 0;