printf xf n ,10 輸出結果為什麼為

時間 2022-04-13 16:45:14

1樓:匿名使用者

嗯,樓上的說的都對,我再補充點,之所以輸出0.00000是由於你輸出的是%f,浮點數的問題。

小數點後幾位根據cpu的不同而不同,一般是小數點後6,7位

2樓:左手煙雨

printf 會把後面的資料按照前面的指定型別進行解析,而不會把後面的資料強制轉換成前面指定的資料型別。由於float和int的儲存格式不一樣,這就是「printf("x = %f\n",10);輸出結果為0.00000」的原因,同樣:

printf("x = %d\n",10.00);輸出結果也為0。你可以修改為:

printf("x = %f\n",(float)10);或者printf("x = %f\n",10.0);這樣輸出結果就是10.000000了。

printf只有乙個例外進行型別轉換,其餘情況下不會進行型別轉換,就是列印乙個float型別的值的時候,會自動從float轉換為double。這也是為什麼printf沒有%lf格式說明符的原因,float和double都使用%f說明符。

3樓:

#include

void main()

你的語句不合法,printf("x = %f\n",10);

10不是變數,%f要對應乙個變數

4樓:素赫

printf("x = %f\n",10);

這是不可以的

10那裡必須是變數,不能是常量

你可以這樣

a=10;

printf("x = %f\n",a);

你那樣做,計算機就隨便輸出了

在c環境中,定義t為double型的,t=1/2,用printf輸出顯示時為何答案是0.00000?

5樓:風吹雨霖鈴

t = 1 / 2, 系統會先運算 1 / 2, 由於1和2的預設資料型別是 int, 所以 1 / 2 運算後的結果也是 int

不可能是0.5, 只能是0, 然後系統把0 轉換成 double 即為0.000000, 賦給t, 所以輸出的t 是 0.000000,

如要輸出0.5 可用 t = 1.0 / 2, 或者 t = (double)1 / 2;

6樓:流淚殤

c中對於/運算,他的運算元可以為整型或實型的常量、變數和函式。當x/y中如果兩個運算元中有乙個是實型,運算結果為實型數,如果兩個運算元都是整數,就像你給的那種,運算結果為整數(即小數部分捨去了),所以你的結果錯了

把分子改成小數就行了

7樓:匿名使用者

因為1和2都是整型

他們相除的結果也是整型 也就是等於0

賦值給double型別的t

所以t的值為0.000000

你可以這樣修改

t=1.0/2;

這樣輸出的結果就讓你滿意了

8樓:陸成無敵

1和2都是整形,計算結果所以也是整形(即1/2=0,其實還有餘數但被省了)

t=1.0/2;也可

t=(double)1/2;也可

這好想是那本書上寫的,建議你系統的看一本書,絕對大有益處

9樓:匿名使用者

改為main()

10樓:匿名使用者

#include

void main()

強制型別轉換為double型!

11樓:匿名使用者

1和2都是整數,編譯器會把1/2當作1整除2,商是整數,結果為0。

a=1/2;這行可以改成下面任意一種形式,就能輸出正確結果了:

a=1f/2;

a=1/2f;

a=1f/2f;

f或者f是浮點數(float)常量字尾,1f是乙個浮點型常量,和整型常量5是不同的概念。

只要除數或被除數中有乙個是浮點數,那麼「/」會被理解為浮點數除法,結果也是浮點數。

另外,寫成

a=1.0/2;

a=1/2.0;

a=1.0/2.0;

a=1d/2;

a=1/2d;

a=1.0/2f;

a=1f/2.0;

a=1.0f/2d;

……之類結果也是一樣的,d或d是雙精度浮點數(double)常量字尾。1.0之類的寫法和字尾d表示相同。

不過由於double比float精度高,有double參與除法時結果為double型別,賦值給float a時double自動轉換為float型會損失精度,編譯器可能會給出警告。

也可以利用顯式強制型別轉換:

a=(float)1/2;

a=1/(float)2;

a=(float)1/(float)2;

(float)是強制型別轉換運算子,表示強制轉換後續運算數為float型別。強制型別轉換運算子的優先順序高於算術運算子「/」,所以進行除法運算的是經過強制型別轉換後的數(float型),而不再是兩個整數。因為強制型別轉換生成了臨時物件,效率比直接常量表示要低。

為什麼用c語言輸出一元二次方程的答案不對,有兩個解時,乙個是0.00000,另乙個總是個很大的負數

12樓:匿名使用者

printf("該方程有兩個解x1=%lf,x2=%lf",x1,x2); 引號位置錯了,另應該用%lf輸出double型別

printf("該方程有乙個解x1=%0.6lf「,x1); //同上

13樓:張瑜

printf("該方程有兩個解引號錯了

printf("該方程有乙個解,x1=%0.6f「,x1);

double 對應%lf

float 對應 %f 這個雖然有時候可以通用但是有時候會出錯 建議區分這一點

還有就是為什麼後面會出現數字亂碼 是因為 兩個 %lf 得不到你傳遞的兩個值 所以產生了垃圾值!

14樓:雲青春不朽

你在輸出解的時候錯了!源**可以改成下面這樣,#include

#include

void main()

else if(melt==0)

else

}你試試可不可以。還有那個double是雙精度浮點,定義float型別的就行

printf 的返回值是什麼,printf函式有沒有返回值

返回乙個int值,表示被列印的字元數 例如 int a 104 printf d a printf將返回3,再如 printf 123 n printf將返回4 printf函式有沒有返回值 printf函式有返回值,其函式原型為 int printf const char printf函式返回乙個...

printf和printk的區別

3全部printk與printf的乙個區別printk是 行驅動 的,也就是說只有收到乙個換行符資料才會真正輸出到終端,否則就不會有任何資訊輸出。另乙個值得注意的問題是我們在除錯嵌入式裝置的時候,經常是從串列埠獲得顯示資訊,如果我們使用printk過於頻繁的話,串列埠的傳輸速度就會成為瓶頸,這樣會造...

c 輸出函式printf的問題

首先printf是c語言的函式,不是c 的,因為c 相容c語言所以能用,不過要注意我說的,這個是有區別的 我覺得這篇文章可能是在批評的printf的沒有任何檢查錯誤的能力吧,就是說沒有型別檢查,例如 charc a printf d c 這個你說能輸出嗎?能輸出,不過你又會問,變數是char型別的,...

printf 按回車鍵繼續getchar這兩句有什

r 是個轉義字元,表示回車,這時候游標會到達本行的行首 所以456就會把123覆蓋。你可以換別的試試 a 響鈴 bel 007 b 退格 bs 008 f 換頁 ff 012 n 換行 lf 010 r 回車 cr 013 t 水平製表 ht 009 v 垂直製表 vt 011 反斜槓 092 問號...

請教關於c語言printf和指標的問題

printf f p 首先說明,這種輸出在邏輯上是不通的 的確,這樣書是錯誤的用法!我也測試了一下,如果這樣寫 printf f f n p,p 10.09996 10.099996 printf f f n p,p 10.09996 10.09996 error1 printf f f n p,p...