在C语言中,%d、%f、%p、%c、%s 以及 %(通常写成 %%) 是 printf()、scanf() 等函数中最常用的格式说明符(也叫格式占位符或转换说明符)。它们告诉函数应该以什么格式来输出或输入对应的数据。
以下是它们最常见的含义和用法总结:
| 格式符 | 代表意义 | 对应的C语言数据类型 | 典型用法示例 | 说明与注意事项 |
|---|---|---|---|---|
| %d | 以十进制形式输出有符号整数 | int, short, long 等整数类型 | printf("%d", 123); → 123printf("%d", -45); → -45 | 最常用的整数输出格式,等价于 %i(在输出时几乎相同) |
| %f | 以小数形式输出浮点数 | float, double | printf("%f", 3.14159); → 3.141590printf("%.2f", 3.14159); → 3.14 | 默认显示6位小数,可用 .n 指定小数位数(如 %.2f) |
| %p | 输出指针(内存地址),通常以十六进制显示 | 任何指针类型(如 int*, void*) | int a = 10; printf("%p", &a); → 0x7ffee4a0c4ac(地址) | 通常会自动带 0x 前缀;建议强制转换为 (void*) |
| %c | 输出单个字符 | char, int(会被当作字符) | printf("%c", 'A'); → Aprintf("%c", 66); → B | 只输出一个字符,不会输出字符串 |
| %s | 输出字符串(以 \0 结尾) | char[] 或 char* | printf("%s", "Hello"); → Hello | 必须传入以 \0 结尾的字符数组或字符串指针 |
| %% | 输出一个真正的 % 百分号 | 无(只是转义) | printf("完成度: 95%%"); → 完成度: 95% | 因为单个 % 有特殊含义,所以要输出 % 必须写成 %% |
快速记忆口诀
- d → decimal(十进制整数)
- f → float(浮点数/小数)
- p → pointer(指针地址)
- c → character(字符)
- s → string(字符串)
- % → 百分号本身(用
%%表示)
常见组合示例
#include <stdio.h>
int main() {
int a = 100;
float b = 3.14159;
char ch = 'Z';
char str[] = "你好C语言";
int *ptr = &a;
printf("整数: %d\n", a); // 整数: 100
printf("小数: %.3f\n", b); // 小数: 3.142
printf("字符: %c\n", ch); // 字符: Z
printf("字符串: %s\n", str); // 字符串: 你好C语言
printf("指针地址: %p\n", (void*)ptr); // 指针地址: 0x7ffee...
printf("折扣: 8.5%% 很划算\n"); // 折扣: 8.5% 很划算
return 0;
}
希望这个总结清晰明了!如果需要更详细的修饰符(如 %02d、%8.2f、-左对齐等)说明,也可以继续问我~