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

Ofe*_*zon -1 c

所以我创建了一个函数,它返回一个值,该值是用户给出的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);
}
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 5

这里的问题是(我相信)你希望result传递给函数的参数改变值.这不是C是如何工作的,而不是所有的参数传递由值和变量result调用的函数里面是具有无连接的局部变量result调用函数变量.更改一个变量不会影响另一个变量.

而是使用函数返回的值:

result = connection(num1, num2, result);
Run Code Online (Sandbox Code Playgroud)

当然,这意味着result作为一个参数传递是完全没有意义的,你甚至不需要它在函数中:

int connection(int num1, int num2)
{
    return num1 + num2;
}
Run Code Online (Sandbox Code Playgroud)

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


修改参数的旁注意味着你必须通过引用传递它,C不支持它.虽然可以通过使用指针来模拟它:

void connection(int num1, int num2, int *result)
{
    *result = num1 + num2;
}
Run Code Online (Sandbox Code Playgroud)

然后称之为

int result;
connection(num1, num2, &result);
Run Code Online (Sandbox Code Playgroud)