本知识点对应谭浩强《C程序设计(第五版)》第3章3.4.3节"用printf函数输出数据",是printf函数用法的重要补充,重点解决程序输出的可读性问题。
一、非输出控制符的核心概念
1.1 定义与区分
printf函数的格式字符串由两部分组成:
-
输出控制符 :以百分号
%开头的字符,用于指定变量的输出格式,如%d、%x、%c等。 -
非输出控制符 :格式字符串中除输出控制符以外的所有字符,会原样输出到显示器。
示例:
printf("i=%d, j=%d\n", i, j);
-
输出控制符:
%d、%d。 -
非输出控制符:
i=、,、j=、\n。
1.2 常见非输出控制符
-
普通字符:空格、逗号、冒号、汉字说明文字等。
-
转义字符:
\n(换行)、\t(制表符)等。
注意 :
\n是典型的非输出控制符,它不是以%开头,作用是将输出光标移动到下一行开头。
二、输出格式的可读性优化
2.1 无格式输出的问题
如果只使用输出控制符而不添加任何非输出控制符,多个变量的输出结果会连在一起,难以区分。
错误示例:
#include <stdio.h>
int main() {
int j = 3;
int k = 5;
printf("%d%d\n", j, k); // 无任何非输出控制符
return 0;
}
输出结果:
35
问题:无法区分输出的是"3和5"还是"35",可读性极差。
2.2 优化方法
通过添加非输出控制符,可以清晰分隔不同变量的输出,添加说明文字,让输出结果一目了然。
优化示例1:添加分隔符
#include <stdio.h>
int main() {
int j = 3;
int k = 5;
printf("%d %d\n", j, k); // 添加空格分隔,输出:3 5
printf("%d,%d\n", j, k); // 添加逗号分隔,输出:3,5
return 0;
}
优化示例2:添加变量说明
#include <stdio.h>
int main() {
int j = 3;
int k = 5;
printf("j=%d, k=%d\n", j, k); // 添加变量名说明
return 0;
}
输出结果:
j=3, k=5
优势:任何人看到输出结果都能立刻明白每个数值对应的变量含义。
2.3 格式优化的重要性
程序不仅要功能正确,还要具有良好的可读性。就像软件产品需要友好的用户界面一样,程序的输出结果也应该清晰易懂。即使程序逻辑再完美、运行速度再快,如果输出结果混乱不堪,别人也无法使用和理解。
三、printf基本用法总结
printf函数的四种基本用法已经全部讲解完毕:
-
直接输出字符串 :
printf("Hello World!\n");。 -
带单个输出控制符 :
printf("%d\n", i);。 -
带多个输出控制符 :
printf("%d %d\n", j, k);。 -
混合输出控制符与非输出控制符 :
printf("j=%d, k=%d\n", j, k);。
注意 :其他输出控制符(如
%s字符串输出)将在后续章节中讲解。%o(八进制输出)在现代编程中使用极少,了解即可。
四、要点总结
-
printf格式字符串由输出控制符 和非输出控制符两部分组成。
-
输出控制符以
%开头,用于指定变量的输出格式。 -
非输出控制符会原样输出,用于分隔数据、添加说明文字、控制输出位置。
-
必须重视输出格式的可读性,通过添加非输出控制符让输出结果清晰易懂。
-
程序不仅要功能正确,还要具有良好的用户体验,输出格式是用户体验的重要组成部分。