C语言格式化输出:%转换符详解

需积分: 22 5 下载量 101 浏览量 更新于2024-09-14 收藏 17KB DOCX 举报
C语言转换格式符 C语言中的转换格式符是`printf`函数的重要组成部分,它允许程序员指定输出数据的格式。转换格式符通常以百分号`%`开头,后面跟着一系列可选的修饰符和类型说明符。这些格式符在`printf`函数中起到控制输出样式的作用,包括数据的对齐、宽度、精度以及类型。 1. **类型说明符**: - `%c`:输出单个字符。 - `%d`或`%i`:输出带符号的十进制整数。 - `%e`或`%E`:输出浮点数,采用科学记数法,小写字母`e`或大写字母`E`表示指数。 - `%f`:输出浮点数,以小数形式展示。 - `%g`或`%G`:根据情况选择`%f`或`%e`(或`%E`)中的较短形式输出。 - `%o`:输出无符号的八进制整数。 - `%u`:输出无符号的十进制整数。 - `%x`或`%X`:输出无符号的十六进制整数,小写`a-f`或大写`A-F`表示。 - `%ld`、`%lu`等:表示长整型,分别对应带符号和无符号的长整数。 - `%p`:输出内存地址,对于近指针和远指针有不同的显示方式。 - `%s`:输出字符串。 - `%%`:输出百分号`%`本身。 - `%n`:不输出任何内容,而是将已写入的字符数存放在对应的指针变量中。 2. **修饰符**: - **标志符(flags)**: - `-`:左对齐,右侧填充空格。 - `+`:在正数前面加`+`,负数前面加`-`。 - 空格:仅在负数前加空格,正数保持不变。 - `#`:在特定情况下添加前缀: - `%o`:添加前导`0`。 - `%x`和`%X`:添加前导`0x`或`0X`。 - `%e`、`%E`、`%f`:总是显示小数点。 - `%g`、`%G`:除了零之外,始终显示小数点。 - **宽度(width)**: - 定义输出的最小宽度,不足部分用空格或指定字符填充。 - `n`:固定宽度,如`%5d`表示至少5位宽,不足用空格填充。 - `0n`:同样表示宽度,但不足部分用`0`填充。 - `*`:宽度由后续参数提供。 - **精度(precison)**: - 控制小数点后的位数或总宽度。 - `n`:指定小数点后最多显示的位数,如`%.2f`表示保留两位小数。 - `0`:在`%e`、`%E`、`%f`中表示不显示小数点。 - `*`:精度由后续参数提供。 - **F|N|h|l**: - 这些修饰符用于指定指针类型(F/N)或整数类型(h/l): - `F`和`N`用于远指针。 - `h`用于短整型(`short`)。 - `l`用于长整型(`long`)。 `printf`函数通过组合这些格式符和修饰符,可以灵活地控制输出格式,满足各种输出需求。理解并熟练使用转换格式符是编写C程序时不可或缺的技能。