modf()中的引用参数总无法得到值
我的程序是这样的:
/******************************************************************************
** Test C lib function "modf()"
** double modf(double, double *)
******************************************************************************/
#include <iostream.h>
#include <math.h>
int main(){
double val = 15.28983;
double iptr = 0.0;
cout << "val:" << val << endl;
cout << "modf(val, &iptr):" << modf(val, &iptr) << " iptr:" << iptr << endl;
cout << "sizeof(iptr):" << sizeof(iptr) << endl;
return 0;
}
里面的iptr总是0,没有被赋值,不知道为什么
问题点数:35、回复次数:9Top
1 楼ErnestLu()回复于 2006-10-03 11:27:53 得分 10
我编译的结果:
val:15.2898
modf(val, &iptr):0.28983 iptr:15
sizeof(iptr):8
没有错啊Top
2 楼Kenmark(fenix)回复于 2006-10-03 22:20:42 得分 5
编译器什么版本?
一般有些编译器实现库函数时和STD不同
建议少向STD的东西里面传引用的东西Top
3 楼richard_ma(中子星)回复于 2006-10-04 19:39:32 得分 0
这也和编译器有关吗?这可是标准库函数啊
我用的是VC6.0
ls的说不要传引用,那直接传指针?有什么区别吗?望详解(加分)Top
4 楼lw1a2(一刀 现在改六点下班了:()回复于 2006-10-04 19:46:28 得分 0
这里没传过引用,传的是指针
没有VC6,没法测Top
5 楼richard_ma(中子星)回复于 2006-10-04 19:56:23 得分 0
请问一楼的用的什么编译器?Top
6 楼lw1a2(一刀 现在改六点下班了:()回复于 2006-10-04 20:04:15 得分 0
你用这个试试:
double val = 15.28983;
double iptr = 0.0;
cout << "val:" << val << endl;
cout << "modf(val, &iptr):" << modf(val, &iptr) << " iptr:" ;
cout << iptr << endl;
cout << "sizeof(iptr):" << sizeof(iptr) << endl;Top
7 楼lw1a2(一刀 现在改六点下班了:()回复于 2006-10-04 20:05:21 得分 20
这个玩意是不是又和那个++的问题一样了Top
8 楼richard_ma(中子星)回复于 2006-10-07 17:22:18 得分 0
楼上说的方法果然好用,不知道为什么要把这两行分开写?Top
9 楼richard_ma(中子星)回复于 2006-10-07 17:32:43 得分 0
我肯定了,是编译器实现上的问题,和++是一个道理,这样的代码应该避免出现。Top




