gpt4 book ai didi

c - 我的程序打印 0 而不是预期的数字

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

所以我创建了一个函数,它返回一个值,该值是用户给出的 2 个数字的连接(总和)。但每次我输入这 2 个数字,结果总是 0。

float connection(int num1, int num2, float result)
{
result= num1 + num2;
return (result);
}

int main()
{
int num1= 0;
int num2= 0;
float result= 0.0;

printf("\nChoose the first number you'd like to connect: ");
scanf("%d", &num1);
getchar();
printf("choose the second number you'd like to connect: ");
scanf("%d", &num2);
connection(num1, num2, result);
printf("The result is: %f", result);
}

最佳答案

这里的问题是(我相信)您期望参数 result您传递给函数来更改值。这不是 C 的工作方式,相反,所有参数都通过值和变量 result 传递。被调用函数内部是一个局部变量,它与result没有任何关系。调用函数中的变量。更改一个变量不会影响另一个变量。

而是使用函数返回的值:

result = connection(num1, num2, result);

当然,这意味着通过result作为参数是完全没有意义的,你甚至不需要在函数中使用它:

int connection(int num1, int num2)
{
return num1 + num2;
}

另请注意,我更改了返回类型,因为添加两个整数永远不会产生 float 。

<小时/>

顺便说一句,修改参数意味着您必须通过引用传递它,这是 C 不支持的。不过,可以通过使用来模拟指针:

void connection(int num1, int num2, int *result)
{
*result = num1 + num2;
}

然后将其称为

int result;
connection(num1, num2, &result);

关于c - 我的程序打印 0 而不是预期的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34568507/

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