Strtol()和atol()不会转换大于9位的字符串

前端之家收集整理的这篇文章主要介绍了Strtol()和atol()不会转换大于9位的字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在处理需要将字符串转换为长数字的应用程序时,atol()和strtol()无法正确转换任何大于9位的字符串.

strtol会提示一个与字符串无关的数字,而atol会产生一个负数(溢出).

知道为什么会这样,我该如何解决

解决方法

这可能与您平台上的长度大小有关.在32位平台上,适合长的最大值是2147483647(2 ^ 31-1),所以任何大于它的东西都不适合.使用long long和strtoll代替.
原文链接:https://www.f2er.com/c/119810.html

猜你在找的C&C++相关文章