天天看點

《C語言解惑》—— 2.1 printf輸出的小奧妙

本節書摘來自華章出版社《c語言解惑》一 書中的第2章,第2.1節,作者:劉振安 劉燕君,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

需要注意printf輸出字元串時,“n”之前和之後的空格含義不同,前面的空格沒有影響,即如下兩條語句

的輸出是對齊的。而下面兩條語句

的輸出是不對齊的,輸出為

即第2條語句前面的空格數由第1條語句“n”後面的空格數決定。當要輸出多行左對齊的資訊時,要特别注意。例如原來是想輸出左對齊,但語句

的輸出則為

這是因為在兩個雙引号之間的空格也是輸出資訊的組成部分,輸出換行之後,資訊并沒有輸出完畢,後面的空格被輸出到下一行,造成第2個輸出語句從空格之後開始。看看下面程式的運作結果,就會恍然大悟。

輸出結果如下。

printf函數的一般格式為

printf(格式控制,輸出量表);

格式控制是用雙引号(" ")引起來的字元串,也稱“控制字元串”。它包括普通字元串和格式說明。其中普通字元串是需要原樣輸出的字元,遇到“n”則換到下一行。格式說明由“%”和格式符(d、f、c、s、o、x、u等)組成(如%d和%f等)。它的作用是将輸出的資料轉換為指定格式輸出。格式說明總是由“%”字元開始,但必須符合要求。如下語句

多了一個“%”号,輸出的結果就是錯的。

【例2.1】能給出如下語句的輸出結果嗎?

不能!因為格式符沒有規定大小寫之分,是以必須差別對待。以vc(visual c的簡寫)為例,對于十進制數值,隻能是小寫字元,是以%f和%d是無效的。對字元而言,大小寫均可(%c與%c等效),但對字元串,則隻能用%s,不能用%s。不同的編譯系統可能也有差別。雖然從下面的輸出結果中可以看出一些規律,但變量d的位址與機器的硬體有關。

它們對小寫總是有效的,是以不要去記它們,統一使用小寫字母即可。另外,對格式符進行修飾的long,則既可以使用小寫字母l,也可以使用大寫字母l。

最容易混淆的還是%c和%s。程式語句

的輸出是“we,we”。不要混用格式符,下面的語句

的輸出結果是錯的(輸出0),原因是錯用了格式符%d(應該使用%f)。

繼續閱讀