我如何打印整数?当我使用:
int n = GetInt();
printf("%n \n", n);
我得到一个错误,有一个未使用的变量,我无法编译它。
有符号整数使用%d
(或%i
)。
另请参阅man 3 printf
(在类 Unix 系统上)以获取完整的修饰符列表。
那是因为您需要使用与您传递的整数相对应的格式说明符。最常见的是%d
. 尝试将 替换%n
为%d
.
正如其他答案所示,您通常int
使用%d
转换规范或可选地使用%i
转换规范打印。您也可以使用%o
,%x
或%X
(and %u
),尽管从技术上讲,这样做意味着有符号到无符号的转换。
请注意,这%n
是printf()
等人的有效转换规范。但是,与所有其他转换规范不同,%n
转换规范是一个输出操作,它接受一个指向 an 的指针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
转换规范,因为它经常导致问题,正是因为它是输出参数而不是输入参数。
int n;
printf("get number:");
scanf("%d",&n);
scanf("%d",&n);
printf("你的号码是 %d\n",n); 返回0;