atoi函数返回的int取值范围:-2147483648 ~ 2147483647
atol函数返回的long int取值范围:-2147483648 ~ 2147483647
大于10位的数超过int和long int的取值范围
三、解决使用函数_atoi64函数替换
原型:_int64 _atoi64(const char *_String)
参数:带符号数字字符串
返回值:_int64/long long
四、示例测试代码:
printf("atoi: %dn",atoi("12345678901")); printf("atoi: %dn",atoi("-12345678901")); printf("atol: %ldn",atol("12345678901")); printf("atol: %ldn",atol("-12345678901")); printf("_atoi64: %lldn",_atoi64("12345678901")); printf("_atoi64: %lldn",_atoi64("-12345678901"));
结果:
atoi: 2147483647 atoi: -2147483648 atol: 2147483647 atol: -2147483648 _atoi64: 12345678901 _atoi64: -12345678901
atoi和atol转换超过int或long int取值范围的数值会返回最大值或最小值
_atoi64成功转换超过10位的数字字符串
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)