占位符
占位符的第一个车字符是
%
,第二个字符表示占位符的类型。printf()
的占位符有许多种类,与 C 语言的数据类型相对应。下面按照字母顺序,列出占位符如下,方便查询(黄色背景为常用):
%a
浮点数(仅 c99 有效)
%A
浮点数(仅 c99 有效)
%c
: char 类型数据
%d
: 十进制整数 (int)
%e
使用科学记数法的浮点数,指数部分的 e 为小写
%E
使用科学记数法的浮点数,指数部分的 e 为大写
%i
整数,基本等同于%d
%f
: 加粗样式
%g
6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学记数法,指数部分的 e 为小写。
%G
等同于 %g, 唯一的区别是指数部分的 E 为大写
%hd
十进制 short int 类型
ho
八进制 short int 类型
hx
十六进制 short int 类型
%hu
unsigned short int 类型
%ld
十进制整数(long)
%lo
八进制 long int 类型
%lx
十六进制 long int 类型
%lu
unsigned long int 类型
%lld
十进制 long long int 类型
%le
科学记数法表示 long double 类型浮点数
%lf
十进制浮点数(double)
%n
已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量中
%o
八进制整数
%p
指针
%s
字符串
%u
十进制无符号整数(unsigned int)
%x
十六进制整数
%zd
size_t 类型
%%
输出一个百分号
示例:
#include <stdio.h>
int main() {
// %c: 字符类型
char ch = 'A';
printf("字符: %c\n", ch); // 输出: 字符: A
// %d 或 %i: 十进制整数
int num = 123;
printf("整数: %d\n", num); // 输出: 整数: 123
printf("整数: %i\n", num); // 输出: 整数: 123 (与%d相同)
// %ld: 十进制long类型
long bigNum = 123456789L;
printf("长整数: %ld\n", bigNum); // 输出: 长整数: 123456789
// %f: float类型
float f = 3.14f;
printf("单精度浮点数: %f\n", f); // 输出: 单精度浮点数: 3.140000
// %lf: double类型
double d = 3.1415926535;
printf("双精度浮点数: %lf\n", d); // 输出: 双精度浮点数: 3.141593
// %s: 字符串
char str[] = "Hello World";
printf("字符串: %s\n", str); // 输出: 字符串: Hello World
// %u: 无符号整数
unsigned int u = 123;
printf("无符号整数: %u\n", u); // 输出: 无符号整数: 123
// %p: 指针
int *ptr = #
printf("指针地址: %p\n", ptr); // 输出: 指针地址: 0x7ffdxxxxxxx (具体地址取决于系统)
return 0;
}