在C語言中用d輸出小數,結果為很大的的,不正確的數用f輸出整數,結果為0,這是為什麼

2021-03-22 02:09:46 字數 5832 閱讀 4375

1樓:

整數是按補碼存放的,而浮點數是階碼+尾數原碼存放的。機內的浮點數都是8位元組雙精度,53位用來存放尾數原碼,用%d控制只擷取低4位元組的原碼資料按補碼輸出,常常是個大大的或正或負的數;而反過來,一個整數4位元組,按%f要讀取8位元組,而整數前面的4位元組常常是0,把它按階碼部分尾數處理後自然常常是0。只是分析,供參考……

2樓:暖神

請問解決了嗎??遇到了相同問題

3樓:匿名使用者

printf按型別,不同長度取值, 看看printf的事項就知道

4樓:匿名使用者

進位制學的還可以的話應該能明白

在c語言中把一個小數賦值給int型別的然後用%d佔位符輸出,結果只輸出了整數部分

5樓:f立地成佛

你前面定義的哪個型別,你可以試一試%l,小數定義也可以試一試double

c語言%f輸出為什麼小數位都為零了啊

6樓:匿名使用者

你 的寫的這個是得不到float的這樣可以:c=1.0*a/b;你

上邊的a是int b也是int結果肯定是int的0 賦值給float就變成0.000000了知道了吧

7樓:

這個與運算子的優先順序有關。賦值運算(「=」)運算級比算術運算(「/」)要低。先進行除法運算,兩整數相除得到 0 ,最後執行賦值運算,因為 c 為float 型別,比 int 級高,int自動轉為 float型別,即為你的答案0.

00000

在c語言中print(「%d%8.6f「,x,y)中%d%8.6f是什麼意思

8樓:足壇風行者

%d、%8.6f是c語言中輸出佔位符。

%d代表著整型數字輸出;

%8.6f代表浮點數輸出輸出,共佔8列,其中有6位小數,如數值寬度小於8左端補空格。

擴充套件資料

c語言中各型別輸出佔位符介紹:

1、long: %ld; (long 是int得修飾,不能算是一種單獨的資料型別,只是比int多了四個位元組的儲存空間)

2、long long: %lld

3、char : %c

4、float/double : %f  float預設是6位小數輸出;可以在%f中控制;例如:%.2f:輸出兩位小數;

5、char *s(字串) :%s

6、unsigned: %u  (signed:有符號型別, unsigned:無符號型別;預設都是有符號的)

7、八進位制:%o  以0開頭

8、十六進位制:%x 以0x開頭

9樓:匿名使用者

%d指按實際長度,以帶符號十進位制整數形式進行輸出,%8.6f指以浮點小數(包括單精度和雙精度)進行輸出,輸出結果佔8格,取小數點前6位小數。

d格式:用來輸出十進位制整數。有以下幾種用法:

1、%d:按整型資料的實際長度輸出。

2、%md:m為指定的輸出欄位的寬度。如果資料的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。

3、%ld:輸出長整型資料。

f格式:用來輸出實數(包括單、雙精度),以浮點數形式輸出。有以下幾種用法:

1、%f:不指定寬度,整數部分全部輸出,小數部分輸出前6位。

2、%m.nf:輸出共佔m列,其中有n位小數,如數值寬度小於m左端補空格。

3、%-m.nf:輸出共佔n列,其中有n位小數,如數值寬度小於m右端補空格。

擴充套件資料

常用的格式還有:

%o:以八進位制無符號數形式輸出整數。

%x、%x:以十六進位制無符號數形式輸出整數。

%s:輸出字串。

%c:輸出一個字元。

10樓:純爺們

%d表示輸出的x是整形,%8.6f表示y輸出的格式為y取小數點後6位,且y總共佔8個位置,且其靠右。比如y的值為1.12345678,以下左邊框為邊界,則輸出形式為:

1.123456(因為其正好八位所以看不出靠右排列)如果輸出是%8.4f,則輸出會變為:

1.1234(最左邊有兩個空格,共佔八位,靠右排列)%a.bf的意思是該數字取小數點後b位,共佔a位靠右排列(a為正數),如果a為負數則靠左排列,其他不變

11樓:遇千柔裴衍

有print嗎?是printf吧,d%是顯示對應的int型資料,8.6f%表示顯示一個浮點數(float型別),8表示只顯示8位數字,而.

6表示這個浮點數保留小數點後面6位數字,如果不夠6位小數的話,那麼將用0補齊6位小數

12樓:匿名使用者

%d輸出 有符號10進位制整數

%f輸出浮點數 8 代表用於控制顯示數值的寬度是8格,不夠用空格替代,. .6 用於控制小數點後面的位數

c語言裡%d,為什麼有的是%d/n,區別是什麼?

13樓:匿名使用者

%d %f是列印變數的型別。

%d是整數型別。用來輸出十進位制整數,按整型資料的實際長度輸出。

%f是浮點型別(就是含小數點的,預設為6位)

\n是表示回車,即,轉到下一行。

它的意義多表現在有多個printf的時候,為了不混淆,一般每個printf的內容佔一行。

c語言中對於不同型別的資料用不同的格式字元,%d %f是printf函式格式字元。

拓展資料:

在c語言中:printf()函式是格式化輸出函式, 一般用於向標準輸出裝置按規定格式輸出資訊。

printf()函式的呼叫格式為: printf("《格式化字串》", 《參量表》)。

格式輸出,它是c語言中產生格式化輸出的函式(在 stdio.h 中定義)。用於向終端(顯示器、控制檯等)輸出字元。格式控制由要輸出的文字和資料格式說明組成。

要輸出的文字除了可以使用字母、數字、空格和一些數字符號以外,還可以使用一些轉義字元表示特殊的含義。

c語言中printf函式的介紹以及使用

14樓:654鄉

%d為整型輸出,%d比%d/n多了一個「/n」換行符,這樣前者在下一次的輸出會緊接在本次輸出內容後,而後者下一次輸出會在下一行首開始。

如:int a,=10;b=5;

printf("%d\n,%d",a,b);

輸出:10

5c語言中%s,%x,%f,%.100f,%的意思:

格式說明由「%」和格式字元組成,如%d%f等。它的作用是將輸出的資料轉換為指定的格式輸出。格式說明總是由「%」字元開始的。

格式字元有d,o,x,u,c,s,f,e,g等。

%o以八進位制數形式輸出整數,

%x以十六進位制數形式輸出整數,或輸出字串的地址。

%u以十進位制數輸出unsigned型資料(無符號數)。注意:%d與%u有無符號的數值範圍,也就是極限的值,不然數值列印出來會有誤。

%c用來輸出一個字元,

%s用來輸出一個字串,

%f用來輸出實數,以小數形式輸出,預設情況下保留小數點6位。

%.100f用來輸出實數,保留小數點100位。

%e以指數形式輸出實數,

%g根據大小自動選f格式或e格式,且不輸出無意義的零。

15樓:匿名使用者

區別在於兩者定義的輸出不同,%d控制的輸出不換行,而%d/n控制的輸出要換行。/n是轉義字元,控制換行。

例如:int a,=2;b=5;

printf("%d,%d",a,b);

輸出結果為:

2  5

而int a,=2;b=5;

printf("%d,%d",a,b);

輸出結果為:25

擴充套件資料:

/n是轉義字元中的一種,而轉義有2種情況:

(1)將普通字元轉為特殊用途,一般是程式語言中,用於表示不能直接顯示的字元,比如後退鍵,回車鍵,等。

(2)用來將特殊意義的字元轉換回它原來的意義。

轉義字串(escape string),即字元實體(character entity)分成三部分:第一部分是一個&符號,英文叫ampersand;第二部分是實體(entity)名字或者是#加上實體(entity)編號;第三部分是一個分號。

比如,要顯示小於號(<),就可以寫 < 或者 < 。

用實體(entity)名字的好處是比較好理解,一看lt,大概就猜出是less than的意思,但是其劣勢在於並不是所有的瀏覽器都支援最新的entity名字。而實體(entity)編號,各種瀏覽器都能處理。

備註:同一個符號,可以用「實體名稱」和「實體編號」兩種方式引用,「實體名稱」的優勢在於便於記憶,但不能保證所有的瀏覽器都能順利識別它,而「實體編號」則沒有這種擔憂,但它實在不方便記憶。

常用轉義字元及含義如下圖:

16樓:prince某人控

%d:輸出的是整形字元

/n:換行符,即輸出結果需要換行

%d和%d/n的區別就在於,%d下一次的輸入會緊接著本次的輸出內容後,而%d/n下一次的輸出會換行,在下一行的顯示。

例如:int a=6;b=7;

print("%d/n,%d",a,b)

輸出:6

7擴充套件資料c語言中%d,%p,%u,%lu等都有什麼用處%d       有符號10進位制整數(%ld 長整型,%hd短整型 )

%hu   無符號短整形(%u無符號整形,%lu無符號長整形)%i    有符號10進位制整數 (%i 和%d 沒有區別,%i 是老式寫法,都是整型格式)

%o   無符號8進位制整數

%u   無符號10進位制整數

%x   無符號的16進位制數字,並以小寫abcdef表示%x     無符號的16進位制數字,並以大寫abcdef表示%f    輸入輸出為浮點型 (%lf雙精度浮點型)%e/e     用科學表示格式的浮點數

%c        輸入輸出為單個字元

%s        輸入輸出為字串

17樓:梧桐

int a=1; //整數型別

float b=1.2; //浮點型

printf("%d",a); //輸出整數a, %d表示輸出型別為整型

printf("%f",b); //輸出浮點數 b ,%f表示輸出型別為浮點型

printf("1234\n5678"); //注意,我在中間加了一個換行符 「\n」

輸出結果為:

1234

5678

18樓:匿名使用者

你寫的有問題吧。應該是:%d\n吧?

%d是要求輸出(或者輸入)的資料格式是有符號十進位制整數,加了\n之後,代表的是,輸出的時候結果會自動的換到下一行。如果是輸入語句裡面,比如:scanf("%d\n",&a);那就麻煩了。

因為\n可以代表無數個回車符。

19樓:匿名使用者

%d是輸出一個整數,%d\n是輸出這個整數並換行(\n表示換行)如:int a,=10;b=5;

printf("%\n,%d",a,b);

輸出:105

20樓:何處可人生

因為%d是整形數字的轉義符,而你卻沒有給它一個變數,所以顯示的肯定是亂碼了。。。應該這樣

#include

void main()

這樣顯示就是hello %d了,還有你include打錯了,main函式少個花括號

在c語言中,用for語句為陣列賦值,在除錯中的問題

兩種方法,1,不用 複製debug,用printf d a i 每次bai都把值列印出來也du和單步跟蹤一樣,是對是zhi錯結果 dao很明顯下 2,定義另外一個陣列,事先把它的值設定好,然後給目標陣列賦值的時候就不要輸入了直接從設定好的那個陣列取 如 b 10 for i 0 i 10 i 在 中...

c語言以下程式執行後輸出結果為

由於default放在前面,所以在執行完default之後需要執行到第一個break才會結束。i 5 n 10 n 10 n 10i 4 n 10 n 100 i 3 n 10 n 10 n 100i 2 n 10 n 1000 i 1 n 0 n 10 n 1000i 0結束。結果n 1000 i...

c語言中2d之類的表示什麼意思,在c語言中, 是表示什麼意思

3d 表示輸出3位整型數,不夠3位右對齊。2d 表示輸出2位整型數,不夠2位右對齊。格式化規定字元,以 開始,後跟一個或幾個規定字元,用來確定輸出內容格式。在 和字母之間插進數字表示最大場寬。比如 9.2f 表示輸出場寬為9的浮點數,其中小數位為2,整數位為7,小數點佔一位,不夠9位右對齊。8s表示...