新年快乐。
程序报什么错?
你把inline float square(float i){return i*i;}改为inline double square(float i){return i*i;}试试。不知行不行,我也只是记得在哪里看到过,好像类似两个float之积应该相当于double。就是精度应该上升一级。不知是不是这个原因。
我也是很久以前好像在哪里偶尔看到过的,不知对不对。
程序报什么错?
你把inline float square(float i){return i*i;}改为inline double square(float i){return i*i;}试试。不知行不行,我也只是记得在哪里看到过,好像类似两个float之积应该相当于double。就是精度应该上升一级。不知是不是这个原因。
我也是很久以前好像在哪里偶尔看到过的,不知对不对。
error C2668: 'square' : ambiguous call to overloaded function
Error executing cl.exe.
在VC,7.5被认为是double类型的了(64位),当你调用square时,就有这个过程:
double->float(32位)这时VC编译器进得类型检查,正是由于VC的类型安全机制,转换过程报告内存溢出(因为高32位不见了(即使全为0))。注意,在调用函数时,C语言是不允许形参和实参的长度不一样!
你可以这样:
cout<<square((float)7.5)<<endl<<"\n";
先进得强制类型转换就可以通过了!
岂能尽如人意,但求无愧我心,很高兴认识大家!
QQ:341157
E-mail:[email protected]