1 回答

TA貢獻(xiàn)20條經(jīng)驗(yàn) 獲得超29個(gè)贊
定義某個(gè)類型后,輸出的時(shí)候也要輸出相應(yīng)的類型,否則可能會(huì)出錯(cuò)或者造成輸出的數(shù)值不精確。
針對你這個(gè)問題:
%f和%lf分別是float類型和double類型用于格式化輸入輸出時(shí)對應(yīng)的格式符號。
在用于輸出時(shí):
float類型可以使用%lf格式,但不會(huì)有任何好處。
double類型如果使用了%f格式可能會(huì)導(dǎo)致輸出錯(cuò)誤。
在用于輸入時(shí):
double 類型使用了%f格式,會(huì)導(dǎo)致輸入值錯(cuò)誤。
float類型使用double類型不僅會(huì)導(dǎo)致輸入錯(cuò)誤,還可能引起程序崩潰。
所以在輸入輸出時(shí),一定要區(qū)分好double和float,而使用對應(yīng)的格式符號。
--------------
用double 后,要多少位小數(shù),根據(jù)需要自己設(shè)定。 否則會(huì)默認(rèn)保留6位小數(shù)。
--------------
至于那個(gè)警告,我估計(jì)可能是你在輸出的時(shí)候,兩個(gè)double類型中放入了char類型,所以提示這樣可能不安全。可以試試分開輸入,應(yīng)該就不會(huì)了。
===============
我剛才測試了下,輸入格式化分別為:double、char、double的時(shí)候,如果輸入的三個(gè)數(shù)據(jù)都是double時(shí),會(huì)直接處理前兩個(gè)數(shù)據(jù)。
例如:
#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。
因?yàn)橄到y(tǒng)會(huì)認(rèn)為空格就是字符,這樣的話,三個(gè)數(shù)據(jù)必須連續(xù)輸入,且中間那個(gè)必須是符號才行,否則就會(huì)出現(xiàn)問題了。
希望對你有幫助。
- 1 回答
- 1 關(guān)注
- 3565 瀏覽
添加回答
舉報(bào)