为什么小弟我使用atoi后数据值会变化呢

为什么我使用atoi后数据值会变化呢?
char A[20] = "5315658672";
int B = atoi(A);
为什么我使用atoi后; B的值就变成了2147483647而不是5315658672呢?

------解决方案--------------------
有符号数溢出
------解决方案--------------------
数据溢出了。int类型能保存的数据范围是 -2147483648 ~ 2147483647
------解决方案--------------------
数据溢出了,保存不了这大的数
------解决方案--------------------
atol   用这个
------解决方案--------------------
引用:
引用:
数据溢出了。int类型能保存的数据范围是 -2147483648 ~ 2147483647
请问有什么办法使int 表示比它范围更大的数?取反可以吗?
没有办法,瓶子都定义好了就是那么大,没办法装更多
------解决方案--------------------
int装不下的,可以试试 long long int(在windows下VC中也叫 __int64)
相应的转换函数也换个,不能继续用atoi了,参考它相关的函数,windows版的linux版的长整型表达不一样,函数名也不一样,都有相关库函数可用的
------解决方案--------------------
为什么小弟我使用atoi后数据值会变化呢

 留名