簡體   English   中英

為什么printf會轉換大數?

[英]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(con​​st char * str)將字符串轉換為整數,並且基本帶符號整數類型至少可以包含[−32767,+ 32767]范圍,

11110010100大於整數存儲功能,因此會發生溢出。

您可以嘗試使用此方法將字符串解析為Double: atof
http://www.lemoda.net/c/string-to-double/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM