为什么 printf 转换大数?

Why does printf convert large numbers?

为什么这不起作用?

printf("%d \n\n\n\n", atoi("11110010100"));

它输出-1774891788...我只想按原样输出。好像数字小一点就好了

atoi returns 一个 int。您传递一个字符串,其中包含的数字大于 int(在您的实现中)可以容纳的数字。所以,你有一个整数溢出。

要打印 int 可以容纳的最大值,包括 limits.h 并打印 INT_MAX

int atoi (const char * str) 将字符串转换为整数,基本有符号整数类型至少能包含[−32767,+32767]范围,

11110010100 大于整数存储容量,所以你有溢出。

您可以尝试使用此方法将 String 解析为 Double:atof
http://www.lemoda.net/c/string-to-double/