C中的函数如何返回多个值?

时间:2016-11-08 23:39:20

标签: c function pointers

在以下代码中,函数avg(int i,int j,int k,int *pint,double *pfloat)计算ijk的平均值,并分别返回结果的整数和浮点部分。例如,如果average = 22.45它应该返回22和0.45。

以下是代码:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

void avg(int i,int j,int k,int *pint,double *pfloat)
{
  double average=(i+j+k)/3;
  *pfloat=average-(floor(average));
  *pint=floor(average);
}

int main()
{
  int Integer=0;
  double rem=0;
  avg(2,4,5,&Integer,&rem);
  printf("%d\n%lf",Integer,rem);
  return 0;
}

输出为3和0为什么??

1 个答案:

答案 0 :(得分:1)

double average=(i+j+k)/3;

这是一个整数除法。要获得有用的浮点除法,可以添加“。”。像这样的常数:

double average=(i+j+k)/3.;

使其成为浮点常数(这反过来使得除法作为浮点除法完成)。