一、整数类型格式符

格式符数据类型说明示例(变量值)输出
%d / %iint有符号十进制整数int x = 123;123
%hdshort短整型有符号十进制short s = 5;5
%ldlong长整型有符号十进制long l = 123456L;123456
%lldlong long64位有符号十进制long long ll = 123456789LL;123456789
%uunsigned int无符号十进制整数unsigned int u = 40000;40000
%luunsigned long无符号长整型十进制unsigned long ul = 400000UL;400000
%lluunsigned long long无符号64位十进制unsigned long long ull = 123456789012ULL;123456789012
%o无符号整数八进制(无前导0)int x = 255;377
%#o无符号整数八进制(带前导0)int x = 255;0377
%x无符号整数十六进制(小写字母)int x = 255;ff
%X无符号整数十六进制(大写字母)int x = 255;FF
%#x无符号整数十六进制(带 0x 前缀,小写)int x = 255;0xff
%#X无符号整数十六进制(带 0X 前缀,大写)int x = 255;0XFF
%llxunsigned long long64位十六进制(小写)unsigned long long x = 0x123456789abcdefULL;123456789abcdef

二、浮点数类型格式符

格式符数据类型说明示例(变量值)输出
%fdouble十进制小数形式,默认6位小数double d = 3.14159;3.141590
%.nfdouble指定小数位数 nd = 3.14159; printf("%.2f", d);3.14
%e / %Edouble科学计数法(eEd = 123.456;1.234560e+02 / 1.234560E+02
%g / %Gdouble自动选 %f%e 中较短的d = 123.456;123.456
%a / %Adouble十六进制浮点数(C99)d = 3.14;0x1.91eb86p+1 / 0X1.91EB86P+1

三、字符与字符串格式符

格式符数据类型说明示例(变量值)输出
%cchar单个字符char ch = 'A';A
%Cwint_t宽字符(非ISO C标准,实际常用 %lcwchar_t wc = L'中';
%schar*窄字符串(以 \0 结尾)char str[] = "Hello";Hello
%Swchar_t*宽字符串(非ISO C标准,实际常用 %lswchar_t ws[] = L"世界";世界

四、其他格式符

格式符数据类型说明示例输出
%pvoid*指针地址(十六进制)int x=5; printf("%p", &x);0x7fff5fbff5c
%%打印百分号本身printf("%%");%

五、宽度与精度修饰符

修饰符含义示例输出效果
%md输出占 m 列,右对齐,左补空格printf("%5d", 12); 12
%-md左对齐,右补空格printf("%-5d", 12);12
%0md右对齐,左补0printf("%05d", 12);00012
%m.nf总宽度 m(含小数点),小数 nprintf("%6.2f", 3.1); 3.10
%*.*f宽度和精度由参数指定printf("%*.*f", 6, 2, 3.1); 3.10
%h 前缀修饰整型为 short%hd, %hu
%l 前缀修饰整型为 long,浮点为 double%ld, %lf(C99中 %lf 等同 %f
%ll 前缀修饰整型为 long long%lld, %llu

说明

  • 格式说明符结构%[标志][宽度][.精度][长度]类型
    标志:-(左对齐)、+(显示正号)、空格、#(进制前缀)、0(零填充)
    宽度:最小输出字符数
    精度:对于 %f 表示小数位数;对于 %s 表示最大字符数
    长度:h(short)、l(long)、ll(long long)、L(long double)
  • C/C++ 标准差异%lf 在 C99 中与 %fprintf 无区别(因为 float 被提升为 double);%C%S 并非标准 C,标准中应使用 %lc%ls(需包含 <wchar.h>)。
  • 可变宽度参数%*d 表示宽度由参数提供,如 printf("%*d", 5, 12); 输出 12

对于m.n的格式还可以用如下方法表示:

char ch[20];
printf("%*.s\n",m,n,ch);

ASCII码

ASCII值控制字符ASCII值控制字符ASCII值控制字符ASCII值控制字符
0NUT(空字符)32(space)64@96
1SOH(标题开始)33!65A97a
2STX(正文开始)3466递推98递推
3ETX(正文结束)35#67~99~
4EOT(传输结束)36$68~100~
5ENQ(询问)37%69~~~
6ACK(收到通知)38&70~~~
7BEL(铃)39,71~~~
8BS(退格)40(~~~~
9HT(水平制表符)41)~~~~
10LF(换行键)42*~~~~
11VT(垂直制表符)43+~~~~
12FF(换页键)44,~~~~
13CR(回车键)45-~~~~
14SO(移出)46.~~~~
15SI(移入)47/~~~~
16480~~~~
17491~~~~
18CAN(取消)502~~~~
19513~~~~
20524~~~~
21535~~~~
22546~~~~
23557~~~~
24568~~~~
25579~~~~
2658:90Z122z
2759;91[123{
2860<92\124``
2961=93]125}
3062>94^126`
3163?95_127DEL