C语言问题:关于浮点数,为什么两个值加起来不对。

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:26:19
#include <stdio.h>
void pm(double a,double b,double *pa,double *pb)
{
*pa=a+b;
*pb=a-b;
}
main()
{
double a,b;
a=5;b=2;
printf("%d %d\n",a,b);
pm(a,b,&a,&b);
printf("%d %d",a,b);
}

题目要求设置一个函数的,我知道没有必要,可是为什么这样设置之后加上去是个很大很大的值呢???

很难明白你明明定义的是double型,而输出的又是int型,当然不对啦.
这样结果才对:
#include <stdio.h>
void pm(double a,double b,double *pa,double *pb)
{
*pa=a+b;
*pb=a-b;
}
main()
{
double a,b;
a=5;b=2;
printf("%f %f\n",a,b);
pm(a,b,&a,&b);
printf("%f %f",a,b);
}

double和int的存储方式不同,用不对应的类型读取时会产生错误,看一下有关类型的存储方式就明白了

%d输出是整型 %f是float才是浮点型