C輸出格式控制

2021-06-20 16:07:51 字數 1129 閱讀 4665

printf的格式控制的完整格式: % - 0 m.n l或h 格式字元下面對組成格式說明的各項加以說明: 

①%:表示格式說明的起始符號,不可缺少。 

②-:有-表示左對齊輸出,如省略表示右對齊輸出。 

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域寬,即對應的輸出項在輸出裝置上所佔的字元數。n指精度。用於說明輸出的實型數的小數字數。為指定n時,隱含的精度為n=6位。 

⑤l或h:l對整型指long型,對實型指double型。h用於將整型的格式字元修正為short型。 

6 f格式符,用來輸出實數(包括單、雙精度),以小數形式輸出。格式:%f,%m.nf,%-m.nf都可。

注意:單精度實數的有效位數一般為7位,雙精度為16位。

7 int a = 5; printf("%f",a); 

//如果這樣寫,則會預設的讀取以位址a開始的8個位元組的變數解釋成double去輸出。即預設以double型輸出。

int a = 5; printf("%f",(float&)a); 

//如果這樣寫,則會預設的讀取以位址a開始的4個位元組的變數解釋成float去輸出。即以float型輸出。

***問:有人告訴我不能在printf中使用%lf。為什麼printf()用%f輸出double型,而scanf卻用%lf呢?

答:printf的%f說明符的確既可以輸出float型又可以輸出double型。根據「預設引數提公升」規則(在printf這樣的函式的可變引數列表中,不論作用域內有沒有原型,都適用這一規則)float型會被提公升為double型。因此printf()只會看到雙精度數。參見問題15.2。

(嚴格地講,%lf在printf下是未定義的,但是很多系統可能會接受它。要確保可移植性,就要堅持使用%f。)

參見問題12.15和15.2。

對於scanf,情況就完全不同了,它接受指標,這裡沒有類似的型別提公升。(通過指標)向float儲存和向double儲存大不一樣,因此,scanf區別%f和%lf。

此回答摘自poj1113 discuss,當時錯了很多次,最後才發現是輸出用來%f 

--#具體的看

這兒還有個表

若想看c++標準看這 csdn上的飛雪大牛摘的

.html

C 輸出格式控制

拿上這個專案 uml圖來說,學完之後,並沒有感覺有什麼收穫,畫出來的圖,自己看完全不知道咋樣。總覺得,畫的不好,但是也不能算錯。只能算是低階而已。對於 uml圖來說,沒有對錯,只有高階與低階的區別而已吧。咱就先不說 uml了,以後用的機會肯定很多。也就不要求那麼苛刻了。否則gg在 uml上就 ove...

C 輸出格式控制

控制符作用 dec設定整數的基數為10 hex設定整數的基數為16 oct設定 整數的基數為8 setbase n 設定整數的基數為n n只能是16,10,8之一 setfill c 設定填充字元c,c可以是字元常量或字元變數 setprecision n 設定實數的精度為n位。在以一般十進位制小數...

C 控制輸出格式

標頭檔案 include 常用函式 setw n 設域寬為n個字元,保證輸出寬度為n setprecision n 設顯示有效數字為n位 setbase int n 將數字轉換為 n 進製 setiosflags ios left 輸出左對齊 setiosflags ios right 輸出右對齊 ...