gpt4 book ai didi

c - 错误: void value not ignored - in simple c program

转载 作者:行者123 更新时间:2023-11-30 20:59:36 24 4
gpt4 key购买 nike

我是c语言编程新手。运行以下代码时,我收到以下错误,其中有一个小箭头指向 = 符号:

错误:无效值没有被忽略,因为它应该是

*gcd = gcd_lcm((因子1 % 因子2), 因子2, gcd, lcm);

我尝试按照另一篇文章中的步骤将值返回到 void 类型,但似乎在我的代码中不起作用。有人可以帮助指出我的错误吗?非常感激。

#include <stdio.h>

void gcd_lcm(int factor1, int factor2, int *gcd, int *lcm);

int main(void)
{

int factor1;
int factor2;
int GCD;
int LCM;

printf("Enter Factor1: ");
scanf(" %d", &factor1);

printf("Enter Factor2: ");
scanf(" %d", &factor2);

gcd_lcm(factor1, factor2, &GCD, &LCM);
printf("The GCD of %d and %d is %d. The LCM is %d\n", factor1, factor2,
GCD, LCM);

return 0;
}

void gcd_lcm(int factor1, int factor2, int *gcd, int *lcm)
{

if (factor2 == 0)
{
*gcd = factor1;
*lcm = (factor1 * factor2) / *gcd;
}
else
{
*gcd = gcd_lcm((factor1 % factor2), factor2, gcd, lcm);
*lcm = (factor1 * factor2) / *gcd;
}
}

我已经将代码更改为这样,现在可以工作了,但是如何?

void gcd_lcm(int factor1, int factor2, int *gcd, int *lcm)
{

if (factor2 == 0)
{
*gcd = factor1;
*lcm = (factor1 * factor2) / *gcd;
}
else
{
gcd_lcm(factor2, (factor1 % factor2), gcd, lcm);
*lcm = (factor1 * factor2) / *gcd;
}
}

最佳答案

你写的

void gcd_lcm(int factor1, int factor2, int *gcd, int *lcm);

这意味着gcd_lcm没有返回值。

这里您尝试使用它的返回值(它没有):

*gcd = gcd_lcm((factor1 % factor2), factor2, gcd, lcm);

据猜测,由于 gcd 被传递到递归调用中,因此您可以使用:

gcd_lcm((factor1 % factor2), factor2, gcd, lcm);

但是如果我没记错的话,factor2 永远不会改变,因此递归永远不会停止......

关于c - 错误: void value not ignored - in simple c program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com