# include <stdio.h>
int printf(const char *format, ...);
# include <stdio.h> int main(void) { printf("Hello World!\n"); // \n表示换行 return 0; }其中
\n
表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中 n 是“new line”的缩写,即“新的一行”。# include <stdio.h> int main(void) { int i = 10; printf("%d\n", i); /*%d是输出控制符,d 表示十进制,后面的 i 是输出参数*/ return 0; }这句话的意思是将变量 i 以十进制输出。
%x
就是以十六进制的形式输出,要是%o
就是以八进制的形式输出,大家自己试一下。
# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("%d %d\n", i, j); return 0; }输出控制符 1 对应的是输出参数 1,输出控制符 2 对应的是输出参数 2……编译、链接、执行后我们看一下输出结果:
\n
外,所有其余的普通字符全部都原样输出。比如:
# include <stdio.h> int main(void) { int i = 10; int j = 3; printf("i = %d, j = %d\n", i, j); return 0; }这时我们再编译、链接、执行一下:
i=
、,
、空格和j=
全都原样输出了。此外需要注意的是:“输出控制符”和“输出参数”无论在“顺序上”还是在“个数上”一定要一一对应。%
开头的基本上都是输出控制符。
格式控制符 | 说明 |
---|---|
%c | 输出一个单一的字符 |
%hd、%d、%ld | 以十进制、有符号的形式输出 short、int、long 类型的整数 |
%hu、%u、%lu | 以十进制、无符号的形式输出 short、int、long 类型的整数 |
%ho、%o、%lo | 以八进制、不带前缀、无符号的形式输出 short、int、long 类型的整数 |
%#ho、%#o、%#lo | 以八进制、带前缀、无符号的形式输出 short、int、long 类型的整数 |
%hx、%x、%lx %hX、%X、%lX |
以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。 |
%#hx、%#x、%#lx %#hX、%#X、%#lX |
以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。 |
%f、%lf | 以十进制的形式输出 float、double 类型的小数 |
%e、%le %E、%lE |
以指数的形式输出 float、double 类型的小数。如果 e 小写,那么输出结果中的 e 也小写;如果 E 大写,那么输出结果中的 E 也大写。 |
%g、%lg %G、%lG |
以十进制和指数中较短的形式输出 float、double 类型的小数,并且小数部分的最后不会添加多余的 0。如果 g 小写,那么当以指数形式输出时 e 也小写;如果 G 大写,那么当以指数形式输出时 E 也大写。 |
%s | 输出一个字符串 |
# include <stdio.h> int main(void) { int i = 47; printf("%x\n", i); printf("%X\n", i); printf("%#x\n", i); printf("%#X\n", i); return 0; }在 VC++ 6.0 中的输出结果:
x
,输出的字母就是小写的;如果是大写的X
,输出的字母就是大写的;如果加一个#
,就以标准的十六进制形式输出。#
,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加#
容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x
和%#X
中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。
%d
,转义字符前面有反斜杠\
,还有双引号。那么大家有没有想过这样一个问题:怎样将这三个符号通过 printf 输出到屏幕上呢?%d
只需在前面再加上一个%
,要输出\
只需在前面再加上一个\
,要输出双引号也只需在前面加上一个\
即可。程序如下:
# include <stdio.h> int main(void) { printf("%%d\n"); printf("\\\n"); printf("\"\"\n"); return 0; }在 VC++ 6.0 中的输出结果是:
20 345 700 22 56720 9999 20098 2 233 205 1 6666 34 0 23 23006783如果你想到的办法是:
printf("%d %d %d %d\n", 20, 345, 700, 22); printf("%d %d %d %d\n", 56720, 9999, 20098, 2); printf("%d %d %d %d\n", 233, 205, 1, 6666); printf("%d %d %d %d\n", 34, 0, 23, 23006783);这种方法虽然能实现,但过程太自虐了,要敲很多个空格,还要严格控制空格数,否则输出就会错位。实际上,printf() 函数还有一些更高级的玩法,比如自动调整数据的输出格式、控制输出小数的位数等,想学习 printf() 高级玩法的读者请猛击这里。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有