本文介绍了与strtol()返回一个不正确的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我这里有一个奇怪的。与strtol,蒂和所有的atoi返回不正确的值当我通过下面的字符串:

I've got a weird one here. strtol, atol and atoi all return an incorrect value when I pass in the following string:

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

根据我的调试器返回2147483647。我对这个完全难住了。有什么建议?

According to my debugger it returns 2147483647. I'm completely stumped on this. Any advice?

推荐答案

您值大于多么签署键入可以重新present。尝试:

Your value is larger than what a signed long type can represent. Try:

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

(你越来越2147483647,因为它是 LONG_MAX 或0x7FFFFFFF的)

(You're getting 2147483647 since it is LONG_MAX or 0x7FFFFFFF)

这篇关于与strtol()返回一个不正确的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 13:00