error C2668: “fabs”: 对重载函数的调用不明确

qq_36141011 2016-09-14 05:23:05
Visual Studio调试C++程序中出现error C2668: “fabs”: 对重载函数的调用不明确
fabs提示错误 有多个重载函数fabs实例与参数列表匹配

sumr+=(long)fabs(pr1 - pr2);
sumg+=(long)fabs(pg1 - pg2);
sumb+=(long)fabs(pb1 - pb2);
其中 p1,p2,pr1,pr2,pg1,pg2,pb1,pb2为BYTE型

请问这是怎么回事?
...全文
1751 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-09-14
  • 打赏
  • 举报
回复
fabs 缺省参数是 double 类型的 不论C,C++ 浮点函数 double 类型是没问题的 其他,要么重载的,要么扩展的。
paschen 版主 2016-09-14
  • 打赏
  • 举报
回复
fabs/abs函数有多种重载形式,如果你的参数类型不满足,进行一下类型转换, 如(int)a ——将a转换为int 类型
paschen 版主 2016-09-14
  • 打赏
  • 举报
回复
首先 fabs是对浮点数的,如果你不需要用浮点数版的,把fabs改成abs
yshuise 2016-09-14
  • 打赏
  • 举报
回复
sumr+=(long)fabs((long)pr1 - (long)pr2);
qq_36141011 2016-09-14
  • 打赏
  • 举报
回复
引用 楼主 qq_36141011 的回复:
Visual Studio调试C++程序中出现error C2668: “fabs”: 对重载函数的调用不明确 fabs提示错误 有多个重载函数fabs实例与参数列表匹配 sumr+=(long)fabs(pr1 - pr2); sumg+=(long)fabs(pg1 - pg2); sumb+=(long)fabs(pb1 - pb2); 其中 p1,p2,pr1,pr2,pg1,pg2,pb1,pb2为BYTE型 请问这是怎么回事?
请问如何可以实现实参强制转换类型?
小灸舞 2016-09-14
  • 打赏
  • 举报
回复
BYTE应该是unsigned char吧?
VS对数学函数的参数检查更为严格,你把你的实参强制转换下类型才行

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧