c - c中带有百分比字符的奇怪格式说明符

标签 c printf output percentage format-specifiers

我有一个与 c 示例中的“printf”指令相关的问题:

printf("Percentage character: %%",10);

输出正确:百分比字符:%

为什么是格式说明符 (%%)?那边那个10是怎么回事?为什么编译器说 printf 的参数太多?

我尝试以另一种方式显示百分比字符:

printf("Percentage character: %c",putch(37));

然而,输出并不是很好:%Percentage charcater: %

为什么句前会出现百分号?

最佳答案

%% 转换规范在 printf 中用于打印单个 %(不转换任何参数)。

例如:

 printf("10%%\n");

打印

 10%

现在在你的例子中:

printf("Percentage character: %%",10);

没问题,但是 printf 第二个参数被忽略了。它相当于:

printf("Percentage character: %%");

关于你的最后一个例子:

printf("Percentage character: %c",putch(37));

printfputch 都将字符写入标准输出,因此首先评估 putch 并写入一个字符,然后是 printf 将一系列字符写入标准输出。使用:

     printf("Percentage character: %c", 37);

如果您不想要第一个 % 或者更好:

     printf("Percentage character: %c", '%');

如果你想独立于字符集(37在ASCII中是%,但在其他字符集上可以有其他值)。

关于c - c中带有百分比字符的奇怪格式说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109373/

相关文章:

c - 变量参数不打印

c - gcov 产生 0 覆盖率,但单元测试运行良好

c - 使用函数将节点添加到链表

c++ - 这个缓冲区溢出的后果?

csv - Weka 对 CSV 的预测

C程序,终端没有打印

python - TypeError : Must be String, 未列出

c - C iph_tos 中的 IP header 的含义是什么?

c - 强制 C 库 qsort 执行快速排序而不是合并排序

c - C 中的打印顺序