C語言中的printf函式

2021-10-02 22:16:18 字數 2958 閱讀 4794

c語言中的%g是printf()函式的乙個輸出格式化型別,它表示以%f%e中較短的輸出寬度

輸出單雙精度實數,在指數小於-4或者大於等於精度時使用%e格式

%02g : 02表示不足兩位,前面補0輸出;超過兩位的不影響

[root@localhost seq]# printf "%02x\n" 0x123

123[root@localhost seq]# printf "%02x\n" 0x1

01x 表示以十六進製制形式輸出

%g

用來輸出實數,它根據數值的大小,自動選

f格式或

e格式(選擇輸出時佔寬度較小的一種),且不輸出無意義的0。即

%g是根據結果自動選擇科學記數法還是一般的小數記數法

printf("%g\n", 0.00001234);

printf("%g\n", 0.0001234);

printf("%.2g\n", 123.45);

printf("%.2g\n", 23.45);

上面四句輸出結果為:

1.234e-05

0.0001234

1.2e+02

23對於指數小於

-4或者大於給定精度的數值,按照

%e的控制輸出

,否則按照

%f的控制輸出.

[root@localhost seq]# printf "%g" 0.00001234

1.234e-05[root@localhost seq]# printf "%g"^c.00001234

[root@localhost seq]# printf "%g\n" 0.00001234

1.234e-05

[root@localhost seq]# printf "%g\n" 0.0001234

0.0001234

[root@localhost seq]# printf "%.2g\n" 123.45

1.2e+02

[root@localhost seq]# printf "%.2g\n" 23.45

23拓展資料

轉換說明及作為結果的列印輸出%a 浮點數、十六進製制數字和p-記數法(c99)

%a    浮點數、十六進製制數字和p-記法(c99)

%c    乙個字元

%d    有符號十進位制整數

%e    浮點數、e-記數法

%e    浮點數、e-記數法

%f    浮點數、十進位制記數法 

%g    根據數值不同自動選擇%f或%e.

%g    根據數值不同自動選擇%f或%e.

%i 有符號十進位制數(與%d相同)

%o    無符號八進位制整數

%p    指標   

%s    字串

%u    無符號十進位制整數

%x    使用十六進製制數字0f的無符號十六進製制整數

%x    使用十六進製制數字0f的無符號十六進製制整數

%%    列印乙個百分號 使用printf ()函式 printf()的基本形式: printf("格式控制字串",變數列表)

g格式符,用來輸出實數,輸出格式為f格式或e格式,系統根據資料佔寬度m大小,自動選擇佔寬度較小的某種格式輸出,g格式符不輸出小數點後無意義的零。

例:main()

列印輸出:654.320984,6.543210e+002,654.321(其中輸出的654.320984是因為在記憶體中的儲存誤差引起的)。

⑨g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。

%g是c語言printf()函式的乙個輸出格式型別,它表示以%f%e中較短的輸出寬度輸出單、雙精度實數,在指數小於-4或者大於等於精度時使用%e格式

printf()輸出格式型別說明:

輸出型別       格式字元意義

a        浮點數、十六進製制數字和p-計數法(c99)

a        浮點數、十六進製制數字和p-計數法(c99)

c   輸出單個字元

d   以十進位制形式輸出帶符號整數(正數不輸出符號)

e   以指數形式輸出單、雙精度實數  指數標識為e

e   以指數形式輸出單、雙精度實數  指數標識為e

f   以小數形式輸出單、雙精度實數

g       以%f%e中較短的輸出寬度輸出單、雙精度實數,在指數小於-4或者大於等於精度時使用%e格式

i         有符號十進位制整數(與%d相同)

o   以八進位制形式輸出無符號整數(不輸出字首o)

p       輸出記憶體位址形式資料(16進製制)

s   輸出字串

x   以十六進製制形式輸出無符號整數(不輸出字首ox)

x  以十六進製制形式輸出無符號整數(不輸出字首ox

u       以十進位制形式輸出無符號整數

ps: 有關%g輸出的補充說明

%g用於列印浮點型資料時,會去掉多餘的零,至多保留六位有效數字(不同於%e的預設保留小數點後6位)

當%g用於列印超過6位的浮點型資料時,因為精度問題,%f不得不輸出乙個不精確的超過六位的數字,%e也是同樣,而%g此時會選擇%e格式進行輸出,並且按第一條要求,去掉多餘的零,並且四捨五入到6位數字。這是《c primer plus》中所說的超過精度的時候的情況。  (可見,這個6位,是按float型別精度來計算的。)

當乙個數字的絕對值很小的時候,要表示這個數字所需要的字元數目就會多到讓人難以接受。舉例而言,如果我們把π*10^-10寫作0.00000000000314159就會顯得非常醜陋**,反之,如果我們寫作3.14159e-10,就不但簡潔而且易讀好懂。當指數是-4時,這兩種表現形式大小相同。對於比較小的數值,除非該數的指數小於或者等於-5,%g才會採用科學技術發來表示,即,以%e的格式進行輸出。

C語言中的printf函式

includevoid main printf的作用是輸出資訊 d對應的引數值是int型別 visitor count是按指定格式顯示變數的值 d 將引數按整形形式轉換輸出,對應的引數是int ld 將引數按長整型形式轉換輸出,對應的引數是long c 輸出乙個字元,對應的引數是乙個字元 s 輸出乙...

C語言中printf()函式格式輸出

printf 函式是格式輸出函式,請求printf 列印變數的指令取決與變數的型別 例如,在列印整數是使用 d符號,在列印字元是用 c 符號 這些符號被稱為轉換說明 因為它們指定了如何不資料轉換成可顯示的形式 下列列出的是 標準peintf 提供的各種轉換說明 轉換說明及作為結果的列印輸出 a 浮點...

C語言中printf格式

轉換說明及作為結果的列印輸出 a 浮點數 十六進製制數字和p 記數法 c99 a 浮點數 十六進製制數字和p 記法 c99 c 乙個字元 d 有符號十進位制整數 e 浮點數 e 記數法 e 浮點數 e 記數法 f 浮點數 十進位制記數法 g 根據數值不同自動選擇 f或 e g 根據數值不同自動選擇 ...