亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言 如果使用float 之后輸出都必須改成%f??

C語言 如果使用float 之后輸出都必須改成%f??

C C++
丶輝色灬 2016-11-09 21:36:19
如果使用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。

因為系統會認為空格就是字符,這樣的話,三個數據必須連續輸入,且中間那個必須是符號才行,否則就會出現問題了。

希望對你有幫助。

查看完整回答
3 反對 回復 2016-11-10
  • 1 回答
  • 1 關注
  • 3589 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號