ありますが、同時に、ブールとダブルを返すために使用できることを心に来るいくつかの方法があります。
- 戻り、戻り値としてブール値と出力パラメータとしてdoubleを返します。
- ブール値を1つのフィールドに、double値を別のフィールドとして持つ構造体を返します。
- ブール値を戻り値として返し、グローバル変数を使用してdouble値を返します。
bool multiplication(int a, int b, double* product)
{
*product = a * b;
return a >= b;
}
そして:
struct retval {
bool b;
double p;
}
struct retval multiplication(int a, int b)
{
struct retval result;
result.b = a >= b;
result.p = a * b;
return result;
}
そして最後に:これらの
double product;
bool multiplication(int a, int b)
{
product = a * b;
return a >= b;
}
、二ここ
は、これらのソリューションのためのコードは、それぞれどのように見えるかですソリューションは、 boolを返さないように正確に質問に合ってください(代わりに、Cで他の弱点を持つことができるstruct
を返します)。第3の解決策は、私が大域的な使用を強く嫌うためです。(グローバルは単体テストをより困難にし、use関数を純粋な関数にすることができ、スレッドの問題を引き起こします。
これで最初の解決策が残ります。
これはあなたの質問にお答えします。
あなたの関数名は、誤解を招くほどのものです。 'multiplication'という名前の関数は、それが乗算されることを意味し、ブール値の等価性テストを返しません。 –
または、いくつかの 'int *'パラメータを出力パラメータとして使うことができます。 – Holsety
これは再帰関数です。したがって、終了時を指定するブール値を返します。 –