#include <stdio.h>
#include <math.h>
int main()
{
int a = 16;
int b = sqrt(a);
printf("%d/n", b);
return 0;
}
sqrt()函数就是求平方根,在vc6.0里面运行没问题,
但是在vs2005中运行的时候会出现一个错误:
error C2668: 'sqrt' : ambiguous call to overloaded function
原因是:
在vs05的库文件math.h里面的sqrt()函数的参数有两种,aqrt(double value),或者aqrt(float value),而此程序用的是aqrt(int),
找不到匹配项。 因为C++支持重载函数,如果参数不匹配那么就认为找不到该函数。 而C不支持重载,所以会自动将你的int转换成浮点数再运算,就不报错了。
所以我的解决办法是强制类型转换,
int b = sqrt((float)a);
程序就可以顺利运行了。