mah*_*ood 6 c++ visual-studio-2010
为什么我会收到此错误
C2668: 'abs' : ambiguous call to overloaded function
Run Code Online (Sandbox Code Playgroud)
对于像这样的简单代码
#include <iostream>
#include <cmath>
int main()
{
unsigned long long int a = 10000000000000;
unsigned long long int b = 20000000000000;
std::cout << std::abs(a-b) << "\n"; // ERROR
return 0;
}
Run Code Online (Sandbox Code Playgroud)
删除后仍会出现错误std::.但是,如果我使用int数据类型(值较小),则没有问题.
传统的解决方案是手动检查
std::cout << (a<b) ? (b-a) : (a-b) << "\n";
Run Code Online (Sandbox Code Playgroud)
这是唯一的解决方案吗?
Bal*_*Pal 11
检查似乎是唯一真正好的解决方案.替代品需要比您更大的类型和非标准扩展才能使用它.
如果您的范围合适,您可以使用解决方案投射到签名长.我几乎不建议这样做,特别是如果将实现放在只执行该操作的函数中.
| 归档时间: |
|
| 查看次数: |
7179 次 |
| 最近记录: |