在C语言里,百分号是格式字符串中的特殊字符,主要用于引出格式说明符。当我们在printf等函数中想真正打印出一个百分号符号本身时,就必须写成两个百分号,也就是%%。这是因为第一个百分号被当作转义引导符,第二个百分号才是实际要输出的字符。

为什么需要两个百分号
像printf这样的函数,第一个参数是格式字符串。它会逐个扫描字符,遇到普通字符就原样输出,遇到%就认为后面跟着格式说明符,比如%d、%s。如果只写一个%而后面没有合法的格式字符,行为是未定义的,可能输出乱码或直接导致程序崩溃。因此C语言规定用%%来表示输出一个普通的百分号。
常见使用示例
下面通过一段简单代码说明%%的实际作用:
#include <stdio.h>
int main() {
int score = 95;
// 输出:我的成绩是95%,注意%%才表示一个百分号
printf("我的成绩是%d%%n", score);
// 输出:进度:100%
printf("进度:100%%n");
return 0;
}
容易混淆的情况
- 只写
%会被当作格式符起点,若后面不是规定字符,结果不可控。 %%不会消耗任何额外的函数参数,它仅仅输出一个字符。- 在scanf中一般不需要输出,所以
%%极少出现,主要用于printf类函数。
小结
两个百分号%%是C语言格式字符串中的转义写法,专门用来输出一个字面意义上的百分号。掌握这一点,可以让你的控制台输出更准确,也更容易读懂别人写的格式化输出代码。