我对 printf 如何处理 ascii 字符有点困惑。
当我像这样打印字符 % 时,我会得到一个正确的响应,如“ascii %”,这很好。
printf("ascii %% \n");
printf("ascii \x25 \n");
printf("ascii %c \n", 0x25);
ascii %
我可以像这样把它们放在同一行,我得到“ascii % %”,这也很好。
printf("ascii %c \x25 \n", 0x25);
ascii % %
但是从那以后我不能以其他顺序执行此操作,我得到 c 而不是 %,就像这样“ascii %c”
printf("ascii \x25 %c \n", 0x25);
ascii %c
怎么了?
但是我注意到 printf 似乎将 \x25 视为正常的 % 符号,因为如果我在输出 (\x25%) 之后直接添加另一个 % ,它就会变成我所期望的。
printf("ascii \x25% %c \n", 0x25);
ascii % %
但后来我也注意到打印单个 % 似乎也有效,但我没想到它会。
printf("ascii % \n");
ascii %
为什么这行得通,我认为单个 % 不是 printf 的有效输入...有人可以澄清 printf 应该如何工作吗?
注意:我在 Ubuntu 12.04(gcc 版本 4.6.3)上使用默认 gcc。