在C中,我有一个计算a和b的乘积的函数。如果< b它返回false否则返回true。当函数定义为boolean时,如何返回产品?
bool multiplication(int a, int b)
{
int c = a*b;
if (a < b)
return false;
else
return true;
}
答案 0 :(得分:2)
如何同时返回bool和double?
一个函数只能有一种返回类型。但您可以使用包含bool和int成员的结构的变通方法,如其中一条注释中所述。
您可以通过以下方式实现使用递归逻辑编写正整数乘法函数的目标:
int multiplication(int a, int b) {
if(b <= 1) return a;
return a + multiplication(a, --b);
}
答案 1 :(得分:1)
有几种方法可以用来同时返回一个布尔值并加倍:
以下是这些解决方案的代码:
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(而是返回struct
,这可能在C中有其他缺点)。第三个解决方案,我鄙视因为我非常不喜欢使用全局变量(全局变量使得单元测试变得更难,使得使用函数不能成为纯函数,导致线程问题)。
所以这留下了第一个解决方案。
希望这能回答你的问题。
答案 2 :(得分:0)