关于frexp的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 22:36:46
这个函数到底怎么用啊?
#include<stdio.h>
#include<math.h>
void main()
{
int n;
frexp(16.4,&n);
printf("%d\n",n);
}
这个程序输出5,但为什么把函数里面的16.4改为25就错误了呢?而25.0就对了,而且无论怎么修改这个值,输出都是5,为什么啊?
我也十分想不通是为什么,是应该不会出错的啊,我用的是Microsoft visual C++ 2008,是正版的

25是int,25.0是double,但是在C中应该可以默认转化的,不应该出错的,另外是n也不可能只是5,其实这个函数的作用就是将一个双精度的浮点数表示成计算机中存储的以2为底的ISO或IEEE浮点样式。然后返回小数部分和指数部分。