为什么 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/
为什么这不起作用?
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/