问题在于f()函数中的p=b*x2n(s,g)/k2n(g); 语句,此语句中调用了x2n()函数;而在此函数中m=m*s; 此语句存在隐形转换可能带来的截断问题(m为double型,s为float型)。
在这里把s改为double型,并把f函数的形参改为double型就ok了
不知道你用的是什么编译器,
我用dev-c编译器
在c环境和c++环境下 都能正常编译和运行!
warning不是错误! 应该一样可以运行的.
double z=2.3,c=3.2; 改成 float
PS:隐性的强制转换存在一定风险。
我觉得是:
f(x,n)/(f(x+z,n)+f(x+c,n+3))的结果应该是double型的,而却是 %f 输出的。
tc2.0情况下可以正常编译通过