2012-08-06 37 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系统上)的整个修饰符列表。