[英]Why does printf convert large numbers?
為什么不起作用?
printf("%d \n\n\n\n", atoi("11110010100"));
它輸出-1774891788 ...我只是希望它按原樣輸出。 如果數字小一點,那似乎工作得很好。
atoi
返回一個int
。 您傳遞的字符串包含的數字大於int
(在您的實現中)可以容納的數字。 因此,您有整數溢出。
要打印一個int
可以容納的最大值,請包含limits.h
並打印INT_MAX
。
int atoi(const char * str)將字符串轉換為整數,並且基本帶符號整數類型至少可以包含[−32767,+ 32767]范圍,
11110010100大於整數存儲功能,因此會發生溢出。
您可以嘗試使用此方法將字符串解析為Double: atof
http://www.lemoda.net/c/string-to-double/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.