为什么printf会转换大数字?

时间:2015-05-09 11:40:51

标签: c printf atoi

为什么这不起作用?

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

它输出-1774891788 ...我只是希望它按原样输出。如果数字稍微小一点似乎工作得很好。

2 个答案:

答案 0 :(得分:4)

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

要打印int可以容纳的最大值,请添加limits.h并打印INT_MAX

答案 1 :(得分:1)

int atoi(con​​st char * str)将字符串转换为整数,并且基本有符号整数类型至少包含[-32767,+ 32767]范围,

11110010100大于整数存储能力,因此您有溢出。

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

相关问题