2014-07-22 18 views
-1

如果我需要打印一個整數,如果我使用%f而不是%d,會發生什麼?或%ld而不是%d。我是否必須使用與真實數據相同的打印格式?C printf數據格式要求

感謝, 扎克

回答

0

格式說明和參數類型必須匹配,否則,行爲是不確定的(意思是從垃圾輸出到惡魔飛出你的鼻子的任何東西)。

格式說明符不僅告訴printf如何格式化輸出;它告訴函數類型的參數是printf是一個可變參數函數,因此它不知道提前輸入參數的類型(第一個參數除外,總是const char * restrict)。其餘參數只是堆棧中的一列字節。每個轉換說明符告訴printf每個參數有多大(即1個字節的char或2個字節short或4個字節的float等),以便它可以抓取正確大小的內存塊並解釋它正確。