【C语言】printf的输出格式控制符、格式修饰符、转义字符
格式控制符:
%d
:用于输出十进制有符号整数。%u
:用于输出十进制无符号整数。%f
:用于输出十进制浮点数字。%e
或%E
:用于输出指数形式的浮点数。%g
或%G
:用于输出浮点数,根据数值大小自动选择使用%f
或%e
。%x
或%X
:用于输出十六进制。%c
:用于输出单个字符。%s
:用于输出字符串。%p
:用于输出指针地址。%lu
:用于输出无符号长整型。%lld
或%I64d
:用于输出有符号长长整型。%llu
或%I64u
:用于输出无符号长长整型。%Lf
:用于输出长双精度浮点数。-
%%
格式控制符:用来输出百分号%
,在输出时需要使用两个百分号连在一起。
格式修饰符:
-
:左对齐。+
:输出符号(正数前面加上“+”)。#
:八进制前缀(0)、十六进制前缀(0x 或 0X)或浮点数小数点(.)。0
:用 0 在左侧填充数据输出的空白,而不是默认的空格字符。m.n
:m
是指定的最小宽度,n
是指定的精度。*
:用来接收动态传入的宽度和精度。例如,%*.*f
表示输出浮点数,宽度和精度由后面带两个 int 类型的参数动态传入。
转义字符:
a
:警报(响铃)。b
:退格(回退)一格。f
:换页。n
:换行。r
:回车。t
:水平制表符。v
:垂直制表符。\
:反斜杠。'
:单引号。"
:双引号。?
:问号。:字符串结束标志。
代码演示:
#include<stdio.h>
int main() {
// 整型
int a = 123;
printf(" % dn", a); // 输出 123
// 无符号整型
unsigned int b = 456;
printf("%un", b); // 输出 456
// 浮点数
double c = 1.23;
printf("%fn", c); // 输出 1.230000
// 指数形式浮点数
double d = 12345.678;
printf("%en", d); // 输出 1.234568e+04
// 十六进制
int e = 0x123;
printf("%xn", e); // 输出 123
// 字符
char f = 'a';
printf("%cn", f); // 输出 a
// 字符串
char g[] = "hello world";
printf("%sn", g); // 输出 hello world
// 指针地址
int* h = &a;
printf("%pn", h); // 输出 a 的地址
// 无符号长整型
unsigned long i = 1234567890ul;
printf("%lun", i); // 输出 1234567890
// 有符号长长整型
long long j = -123450000000ll;
printf("%lldn", j); // 输出 -123450000000
// 无符号长长整型
unsigned long long k = 123450000000ull;
printf("%llun", k); // 输出 123450000000
// 长双精度浮点数
long double l = 1.23;
printf("%Lfn", l); // 输出 1.230000
// 百分号转义
printf("%%n"); // 输出 %
// 格式修饰符
int num = 123;
double fnum = 3.14159;
printf("%-5dn", num); // 输出 123 (左对齐)
printf("%+dn", num); // 输出 +123(输出符号)
printf("%#xn", num); // 输出 0x7b(十六进制前缀)
printf("%05dn", num); // 输出 00123(用 0 左对齐填充)
printf("%.2fn", fnum); // 输出 3.14 (精度控制)
printf("%*.*fn", 8, 2, fnum); // 输出 3.14 (动态宽度和精度,从后面两个 int 参数中传入)
// 转义字符
printf("hellotworldn"); // 输出 hello world
return 0;
}
对于修饰符和格式控制符的使用,可以参考具体的 C 语言教程或参考手册,根据实际需要选择使用。同时,可以使用 printf 函数的返回值来判断是否输出成功。