| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3060 人关注过本帖
标题:为什么sqrt(3)会报错说重载函数的调用不明确
只看楼主 加入收藏
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
结帖率:85.71%
收藏
 问题点数:0 回复次数:8 
为什么sqrt(3)会报错说重载函数的调用不明确
改为sqrt(3.0)就可以了。但是3到3.0不会自动转换吗?
2016-10-03 16:46
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
这是不会的。
如我定义一下:float a;
a=4/5;
打印a,printf("%f",a);得到的结果不是0.8而是0。把4改成4.0或把5改成5.0才能得到正确的结果。
2016-10-03 17:35
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
收藏
得分:0 
回复 2楼 ehszt
你说的我知道,但是和我说的问题好像不一样吧。。。

c语言里的类型转换,不是很懂。
2016-10-03 17:58
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 3楼 cpxuvs
针对你的问题我刚才试了一下,没你说的情况。
请贴出现问题的源代码。
2016-10-03 18:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
估计你用的不是C,而是C++
对c++而言,编译器不知道你是想调用 sqrt( double ) 还是 sqrt( float )
2016-10-03 18:48
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
收藏
得分:0 
回复 4楼 ehszt
图片附件: 游客没有浏览图片的权限,请 登录注册

其他的我都注释了。
不过我保存的是.cpp。
2016-10-03 18:51
cpxuvs
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:45
专家分:142
注 册:2015-12-22
收藏
得分:0 
我看了一下报错信息,是不能确定float sqrt(float) 还是double sqrt(double)。。。
2016-10-03 18:56
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
回复 6楼 cpxuvs
我用的是dev c++,也保存的是cpp不过没你说的问题。
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-10-03 19:24
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
编译器的的原因,很多编译器能正常通过,少数不行,也不排除.c和.cpp之间的区别(现在看来这个可能性较小)。
你只要知道sqrt()里的参数是浮点型,使用的时候注意点,人工强制转换。
2016-10-03 19:43
快速回复:为什么sqrt(3)会报错说重载函数的调用不明确
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024106 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved