strtol()返回不正确的值

我在这里有一个奇怪的.当我传入以下字符串时,strtol,atol和atoi都返回不正确的值:

long test = strtol("3087663490", &p, 10);

根据我的调试器它返回2147483647.我完全被这个难倒了.有什么建议?

最佳答案
您的值大于签名的long类型可以表示的值.尝试:

unsigned long test = strtoul("3087663490", &p, 10);

(你得到的是2147483647,因为它是LONG_MAX或0x7FFFFFFF)

转载注明原文:strtol()返回不正确的值 - 代码日志