2012-08-06 81 views
-3

如何使用printf整數?當我使用:如何在c中使用printf來打印整數

int n = GetInt(); 

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

我得到的錯誤,有一個未使用的變量,我無法編譯它。

+0

我不知道這個功能是否記錄在互聯網上的任何地方......不,可能不是。 – 2012-08-07 00:19:56

+0

出於好奇,你爲什麼期望''%n「'工作?提示:如果您正在編寫對庫函數的調用,* always *請閱讀該函數的文檔,除非您確信自己知道自己在做什麼。 (而\ n之前的空格可能是不必要的。) – 2012-08-07 00:21:30

+0

@KeithThompson:我猜這是一個與變量名稱或猜測有關的可感知的關聯,並且OP選擇「n」作爲「數」。我不知道... – 2012-08-07 00:23:02

回答

0

正如其他答案指出的,您通常會打印int%d轉換規範,或者可選地使用%i轉換規範。您也可以使用%o,%x%X(和%u),雖然從技術上講這樣做有一個簽名到無符號的轉換。

請注意,%nprintf()等的有效轉換規範。但是,與所有其他轉換規格不同,%n轉換規格是一個輸出操作,它將指針指向int,它用於確定在格式字符串中已寫入多少個字符。因此,您可以使用:

int n = GetInt(); 
int c; 

printf("%d%n\n", n, &c); 
printf("%d characters in number %d\n", c, n); 

請注意,在換行符之前幾乎從不需要任何空格。

TR24731-1(或ISO/IEC 9899:2011附錄K,邊界檢查接口)定義printf_s()等,並明確地禁止所述%n轉換規格,因爲它通常會導致精確地問題,因爲它是一個輸出參數,而不是輸入參數。

1

甲符號整數使用%d(或%i)。

另請參閱man 3 printf(在類Unix系統上)的整個修飾符列表。