c中带有百分比字符的奇怪格式说明符
Strange format specifier in c with percentage character
我有一个与 c 示例中的 "printf" 指令相关的问题:
printf("Percentage character: %%",10);
输出正确:百分比字符:%
为什么是格式说明符 (%%)?那边那个10是怎么回事?为什么编译器说 printf
的参数太多?
我尝试以另一种方式显示百分比字符:
printf("Percentage character: %c",putch(37));
然而,输出并不是很好:%Percentage 字符:%
为什么句子前面会出现百分号?
%%
转换规范用于 printf
以打印单个 %
(不转换任何参数)。
例如:
printf("10%%\n");
打印
10%
现在在你的例子中:
printf("Percentage character: %%",10);
没问题,但是 printf
第二个参数被忽略了。相当于:
printf("Percentage character: %%");
关于你的最后一个例子:
printf("Percentage character: %c",putch(37));
printf
和 putch
都将字符写入标准输出,因此首先对 putch
求值并写入一个字符,然后 printf
将写入一系列字符到标准输出。使用:
printf("Percentage character: %c", 37);
如果您不想要第一个 %
或者更好:
printf("Percentage character: %c", '%');
如果你想独立于字符集(37在ASCII中是%,但在其他字符集上可以有其他值)。
为什么格式说明符 (%%)
想一想您想要打印 %
到 printf()
的情况。如果你只是给出一个 %
它将被视为某种格式说明符的一部分。所以要打印 %
你需要做 %%
那 10 是怎么回事?为什么编译器说 printf 的参数太多?
10
只是 printf()
的另一个参数。由于没有匹配该参数的格式说明符,因此您将收到 too many arguments for printf
消息
在这
printf("Percentage character: %c",putch(37));
putch()
来自标准库 conio.h
并且在 Linux 上不受支持,正如 Wikipedia 所说,它没有被 C 标准定义。
我有一个与 c 示例中的 "printf" 指令相关的问题:
printf("Percentage character: %%",10);
输出正确:百分比字符:%
为什么是格式说明符 (%%)?那边那个10是怎么回事?为什么编译器说 printf
的参数太多?
我尝试以另一种方式显示百分比字符:
printf("Percentage character: %c",putch(37));
然而,输出并不是很好:%Percentage 字符:%
为什么句子前面会出现百分号?
%%
转换规范用于 printf
以打印单个 %
(不转换任何参数)。
例如:
printf("10%%\n");
打印
10%
现在在你的例子中:
printf("Percentage character: %%",10);
没问题,但是 printf
第二个参数被忽略了。相当于:
printf("Percentage character: %%");
关于你的最后一个例子:
printf("Percentage character: %c",putch(37));
printf
和 putch
都将字符写入标准输出,因此首先对 putch
求值并写入一个字符,然后 printf
将写入一系列字符到标准输出。使用:
printf("Percentage character: %c", 37);
如果您不想要第一个 %
或者更好:
printf("Percentage character: %c", '%');
如果你想独立于字符集(37在ASCII中是%,但在其他字符集上可以有其他值)。
为什么格式说明符 (%%)
想一想您想要打印 %
到 printf()
的情况。如果你只是给出一个 %
它将被视为某种格式说明符的一部分。所以要打印 %
你需要做 %%
那 10 是怎么回事?为什么编译器说 printf 的参数太多?
10
只是 printf()
的另一个参数。由于没有匹配该参数的格式说明符,因此您将收到 too many arguments for printf
消息
在这
printf("Percentage character: %c",putch(37));
putch()
来自标准库 conio.h
并且在 Linux 上不受支持,正如 Wikipedia 所说,它没有被 C 标准定义。