C語言問題 f vs lf, d vs ld

2021-08-21 19:49:37 字數 837 閱讀 5214

有的時候輸出為%lf答案就正確。%f就錯。為什麼?

老師說lf是double型別 代表15位有效數字。但是在求三角形面積問題裡根本與這個無關。以下**把%f改為%lf就能輸出正確答案。 為什麼??

#include "stdio.h"

#include "math.h"

int main (void)

else

printf("it is not ********!\n");

return 0;

}

%f和%lf分別是float型別和double型別用於格式化輸入輸出時對應的格式符號。

其中:float,單精度浮點型,對應%f.

double,雙精度浮點型,對應%lf.

在用於輸出時:

float型別可以使用%lf格式,但不會有任何好處。

double型別如果使用了%f格式可能會導致輸出錯誤。

在用於輸入時:

double 型別使用了%f格式,會導致輸入值錯誤。

float型別使用double型別不僅會導致輸入錯誤,還可能引起程式崩潰。

所以在輸入輸出時,一定要區分好double和float,而使用對應的格式符號。

%ld用來輸出長整型數。

%d用來輸出整型數。

因為格式符指明了輸出指定的起始位址開始的若干個位元組的內容(把它們作為長整型數或整型數來解釋),所以,如果用錯了物件,就會得出意想不到的結果。如果用%d來輸出長整型數,就會只取它的頭上幾個位元組,相當於對原來的長整型數取了模;而如果用%ld來輸出整型數,因為實際的數位元組數少而硬要取更多的位元組,就會發生「把別人家的孩子領回家」的事,把別的資料解釋為當前的值了。

C語言 投票問題

問題描述 有n個選民參與投票,候選人分別為a,b,c,d,現在選民分別投a,b,c,d代表4個候選人 資料由電腦隨機產生 無效資料自動排出 最後由高到低排列候選人和其票數 要點解決 1.產生隨機數要用到隨機種子,以當前時間為起始點進行隨機,生成隨機數較大 對其取餘,加上 a 即可生成對應的abcde...

C語言小問題

define max a,b 於是我開始修改 檢視各種 反饋的結果。int a 10,b 100 int x 好吧,我把圓括號給刪除了,於是編譯器給我報錯了。error expected expression before int int a,b 好吧,不能沒有圓括號,雖然現在還不知道是為啥。然後我...

C語言基礎問題

邏輯與 邏輯或 取非 按位與 按位或 按位異或 交換ab兩個數的值,不用temp變數,只需三步 a a b b b a a a b 取乙個整數a從右端開始的 4 7 位。我們首先將a右移4位,即將a的4 7位移到最右端,成為 0 3位,實現方法是 a 7 4 1 即 a 4 再設定乙個低4位為全1,...