为什么这不起作用?
printf("%d \n\n\n\n", atoi("11110010100"));
它输出-1774891788 ...我只是希望它按原样输出。如果数字稍微小一点似乎工作得很好。
答案 0 :(得分:4)
atoi
会返回int
。您传递的字符串包含的数字大于int
(在您的实现中)可以容纳的数字。所以,你有一个整数溢出。
要打印int
可以容纳的最大值,请添加limits.h
并打印INT_MAX
。
答案 1 :(得分:1)
int atoi(const char * str)将字符串转换为整数,并且基本有符号整数类型至少包含[-32767,+ 32767]范围,
11110010100大于整数存储能力,因此您有溢出。
您可以尝试使用此方法将字符串解析为Double: atof
http://www.lemoda.net/c/string-to-double/