詳解C語言printf()輸出格式
C語言printf()輸出格式
主要說明格式字符串的基本思想。
格式字符串綱要
[標(biāo)志] ?? [輸出最少寬度] ?? [.精度] ?? [長(zhǎng)度] ?? 類型 \fcolorbox{#ffae42}{#2E8B57}{\textcolor{White}{[標(biāo)志]\;[輸出最少寬度]\;[.精度]\;[長(zhǎng)度]\;類型}} [標(biāo)志][輸出最少寬度][.精度][長(zhǎng)度]類型?
????因?yàn)闄?quán)重是自右向左,所以先從右側(cè)往左介紹,有時(shí)這個(gè)很重要,比如字符類型進(jìn)行修飾總讓人很疑惑。
- 類型稱為轉(zhuǎn)換類型更合適;
- 長(zhǎng)度 : 并非確切長(zhǎng)度,它僅僅是修飾符,h代表短型,l代表長(zhǎng)型,如果用ll雖然也可以,但目前很多編譯器已經(jīng)開始提示用其它替代方案;
- [.精度] : 浮點(diǎn)型小數(shù)位數(shù)未指定精度時(shí),隱含的精度為6位。如果是字符串,只取字符串中左端設(shè)置精度數(shù) 字符(n個(gè)字符,精度為n);
- 輸出最少寬度 : 如果實(shí)際長(zhǎng)度低于設(shè)置,那么填充就起作用;
- 標(biāo)志的功能主要是是對(duì)齊填充補(bǔ)充 ,主要為左對(duì)齊(-) 、右對(duì)齊(省略既是右對(duì)齊,字符串類型可以用+)、 補(bǔ)充(#)、空格(若符號(hào)為正,則顯示空格,負(fù)則顯示"-")、填充(0);
類型
轉(zhuǎn)換說明A | 備注 | 轉(zhuǎn)換說明B | 備注 |
---|---|---|---|
%d或%i | 有符號(hào)十進(jìn)制整數(shù) | %u | 無符號(hào)十進(jìn)制整數(shù) |
%f | 浮點(diǎn)數(shù)(包括float和doulbe) | %e(%E) | 浮點(diǎn)數(shù)[e-(E-)記數(shù)法] |
%g(%G) | 浮點(diǎn)數(shù)不顯無意義的零"0",甚至小數(shù)點(diǎn) | ||
%c | 字符,實(shí)際上是int,可以用%d打印 | %s | 字符串 |
%x(%X) | 十六進(jìn)制無符號(hào)整數(shù) | %o | 八進(jìn)制無符號(hào)整數(shù) |
%a(%A) | 浮點(diǎn)數(shù)、十六進(jìn)制數(shù)字和p-(P-)記數(shù)法(C99),p代表2,類似于e代表10 | ||
%p | 指針 | %% | 百分號(hào)自身輸出 |
長(zhǎng)度
- h 代表short,一般用%hd
- l 代表long,可以修飾%ld 、%lu、 %lf、%lo,修飾%lc,因?yàn)閏存儲(chǔ)的是int型,可以用l修飾,但權(quán)重自右向左,還是會(huì)輸出字符,而不是數(shù)字。
- ll 代表long long,目前很多編譯器已經(jīng)不太推薦用ll修飾了,他們有專業(yè)的推薦。
- %zd專門為sizeof strlen() 等size_t 返回類型準(zhǔn)備的格式。
精度
?? 采用一段代碼說明更實(shí)際
//加上F防止隱性轉(zhuǎn)化,因?yàn)榇a風(fēng)格中用小寫字母l會(huì)被誤認(rèn)為數(shù)字1,所以統(tǒng)一采用大寫的L、F float PI = 3.1415F; //先優(yōu)先精度(.14)這就占了三位,在向左設(shè)置顯示寬度,沒有設(shè)置對(duì)齊方式,那么默認(rèn)右側(cè)對(duì)齊左側(cè)填充, //左側(cè)填充沒有設(shè)置,那么填充空格,所以顯示 □□3.14 printf("%6.2f\n", PI); //設(shè)置為0會(huì)被四舍五入,顯示3 printf("%.0f\n", PI);
輸出最少寬度
//沒有設(shè)置精度,位數(shù)不夠左側(cè)填充空格,如果設(shè)置為%05d則填充0,如果設(shè)置左對(duì)齊,也不可能右側(cè)填充0 //如果是字符串填充0是無效的,只填充空格 printf("%5d \n", d);
標(biāo)志
-
: 左對(duì)齊- 省略既是右對(duì)齊,字符串可以用+
- 0 : 填充0,只限于左側(cè)填充
#
: 對(duì)c,s,d,u類無影響;對(duì)o類,加前綴數(shù)字0;對(duì)x類,加前綴0x;對(duì)X類,加前綴0X;對(duì)e,g,f 類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn)。- 空格 : 若符號(hào)為正,則顯示空格,負(fù)則顯示"-"
?????? %#o,%#x這樣使用是合理的,如果在e,g,f中使用#,沒有設(shè)置精度,那么因?yàn)閿?shù)據(jù)不同顯示可長(zhǎng)可短,所以基本作為補(bǔ)充前綴使用。
補(bǔ)充和填充是有區(qū)別的,#
并不是Excel中格式設(shè)置的那些作用。
到此這篇關(guān)于C語言printf()輸出格式的文章就介紹到這了,更多相關(guān)C語言printf()輸出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)LeetCode(35.搜索插入位置)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(35.搜索插入位置),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

詳解C/C++ QT QChart 繪制組件應(yīng)用

C++實(shí)現(xiàn)動(dòng)態(tài)數(shù)組功能

C++編寫實(shí)現(xiàn)圖書管理系統(tǒng)

CString,字符串,整數(shù)等相互轉(zhuǎn)換方法(推薦)

貪心算法的C語言實(shí)現(xiàn)與運(yùn)用詳解

C++實(shí)現(xiàn)重載矩陣的部分運(yùn)算符