关于VC6和VS2010下的atoi函数的使用区别

本文记录了从VC6升级到VS2010过程中遇到的atoi函数使用问题,特别关注于大数值转换时的异常行为。在VS2010下,当数值超过0x7FFFFFFF时,atoi返回值会变为0x7FFFFFFF。此现象自VS2005起即存在,建议编码时注意这一细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目从VC6升级到VS2010的过程中,发现了一些问题,大部分网络上都已有介绍,只是在atoi这个函数使用上,发现的问题,在网络上没怎么找到,也许是我没有发现,这里记录一下,供大家参考。

假设有这么一个串: CString str = "3800000000";

我们将它转换为整数: int nVal = atoi(str);

这行代码,在VC6和VS2010下的结果出现了不同。

VC6下的结果是正确的,nVal = -494967296;是个负数,没有错。但VS2010下,只要str中的数值是大于0x7FFFFFFF的,返回的nVal都等于0x7FFFFFFF。

所以,如果大家在VS2010下用atoi,要注意到这个细节。


具同事说,在VS2005后就是这个样子了。

希望了解原因的朋友说说,为什么会这个样子。其他朋友在编码时请注意。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐鹦鹉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值