如果使用float 之后輸出都必須改成%f??使用double 必須使用%lf 我用%f 就會隨機數字...?我用的double 雙精度 為啥小數還是6位?這個警告是怎么回事前4問我用這個程序嘗試的
1 回答
已采納

只是一菜鳥
TA貢獻20條經驗 獲得超29個贊
定義某個類型后,輸出的時候也要輸出相應的類型,否則可能會出錯或者造成輸出的數值不精確。
針對你這個問題:
%f和%lf分別是float類型和double類型用于格式化輸入輸出時對應的格式符號。
在用于輸出時:
float類型可以使用%lf格式,但不會有任何好處。
double類型如果使用了%f格式可能會導致輸出錯誤。
在用于輸入時:
double 類型使用了%f格式,會導致輸入值錯誤。
float類型使用double類型不僅會導致輸入錯誤,還可能引起程序崩潰。
所以在輸入輸出時,一定要區分好double和float,而使用對應的格式符號。
--------------
用double 后,要多少位小數,根據需要自己設定。 否則會默認保留6位小數。
--------------
至于那個警告,我估計可能是你在輸出的時候,兩個double類型中放入了char類型,所以提示這樣可能不安全??梢栽囋嚪珠_輸入,應該就不會了。
===============
我剛才測試了下,輸入格式化分別為:double、char、double的時候,如果輸入的三個數據都是double時,會直接處理前兩個數據。
例如:
#include<stdio.h> int?main() { double?x,y; char?c; scanf("%lf%c%lf",&x,&c,&y); printf("%lf",x+y); return?0; }
輸入:1 ?2 ?3
輸出的則是3,而不是4。
因為系統會認為空格就是字符,這樣的話,三個數據必須連續輸入,且中間那個必須是符號才行,否則就會出現問題了。
希望對你有幫助。
- 1 回答
- 1 關注
- 3589 瀏覽
添加回答
舉報
0/150
提交
取消