to_string 与 abs()

来源:互联网 发布:js文件压缩成 min.js 编辑:程序博客网 时间:2024/05/16 17:21

to_string
使用to_string时,出现:166_fractionToRecurringDecimal.cpp:24: error: call of overloaded ‘to_string(int)’ is ambiguous
把int型的数据转化为string时,提示是模糊的!
然后仔细查阅to_string的函数原型,在C++11中提供了9个函数重载:
string to_string(int val);
string to_string(unsigned val);
string to_string(long val);
string to_string(unsigned long val);
string to_string(long long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string(long double val);
然而在我的编译器上提示,只支持long long int ,long long unsigned,long long double,long long unsigned int,long double,于是乎使用强制类型转换把int 转换为long long int :
res+=std::to_string(static_cast< long long int>(n/d))

abs()
abs()函数的原型:
int abs(int i);
abs函数实现:
int abs(int i)
{
return i<0 ? -i : i;
}
abs函数的参数类型为int型,大多数整数取绝对值都是没有为题的,整数的范围为:-2147483648~2147483647;但是当i=-2147483648时,这是个最小的负数,取绝对值后溢出剩余的部分仍为-2147483648;所以当时用abs函数时,如果可能出现最小负数的情况,需要对其进行数值提升,将int 型提升为long int或者long long 都可以。例如: long long a=abs((long long)b);

原创粉丝点击