私はこれを持っています、そして私がコンパイルしようとすると、ターミナルは私にエラーを与えます。誰かが私を助けることができますか?
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
回答:
回答№1の場合は3どうしたら良い func
もしも (x*x)+(y*y)+(z*z)<=4
本当じゃないの? あなたはそのケースを定義していませんが、関数にはその後何もありません。制御の流れ(つまり、実行パス)は、何も返さずに関数の最後に到達しましたが、何か 〜すべき 関数がvoidでないため、返されます。したがって、「制御は非void関数の終わりに到達します」。
回答№2については2
関数は、次の場合にのみ値(2.0)を返すため、常に値を返すとは限りません。 if ()
テストは本当です。インデントを使用すると役立ちます。
回答№3の場合は1
これは、 return
ステートメントは、 if()
ブロック。
ステートメントがtrueの場合、関数は 2.0
、およびfalseの場合、値を返さずに関数の最後に到達します。
回答№4の場合は1
あなたのコード
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
インデントを使用した場合は
int e=0;
float func(float x, float y, float z)
{
e++;
if ((x*x)+(y*y)+(z*z)<=4)
return 2.0;
}
中かっこを使用した場合は
int e=0;
float func(float x, float y, float z)
{
e++;
if((x*x)+(y*y)+(z*z)<=4)
{
return 2.0;
}
}
これは、パスが値を返さないことは自明です。
しかしまた声明
if((x*x)+(y*y)+(z*z)<=4)
それをより読みやすくするために片付けをすることができます
おそらく
if (((x*x) + (y*y) + (z*z)) <= 4)