格式占位符 与 数据类型
总结:
1、char 类型可以用 %c ,也可以用 %d 【由于char(字符类型)本质就是一个字节的整数】
2、布尔类型(bool)是 int 的别名,所以格式占位符也是 %d
3、size_t类型是:无符号整数值,本身格式占位符为%zu,也可以用%d
一、格式占位符与数据类型的搭配使用
1、整型
如下:
- char 、bool、size_t 都可以与 %d搭配使用
- size_t 可以看作是整型的别名
- %d 可以与所有整型使用,不过宽类型(long,long long)会出现精度损失
2、浮点类型
如下:
- 输出(printf)时,float、double 可以共用 %f,不过输入(scanf)时,必须要一一对应,要不会报错
二、格式占位符
1、不同进制输出格式占位符
%d :十进制整数。
%x :十六进制整数。
%#x :显示前缀 0x 的十六进制整数。 ——x的大小写
%#X :显示前缀 0X 的十六进制整数。
2、整数类型的格式占位符(都是十进制形式的格式占位符)
| 数据类型 | 格式占位符 | 数据类型 | 格式占位符 |
|---|---|---|---|
| int | %d | unsigned int | %u |
| short | %hd | unsigned short | %hu |
| long | %ld | unsigned long | %lu |
| long long | %lld | unsigned long long | %llu |
注:1、布尔类型(bool)是 int 的别名,所以格式占位符也是 %d
2、size_t类型是:无符号整数值
3、字符
(1)字符类型的格式占位符:使用 %c 表示 char类型
(2)字符串的格式化占位符:使用 %s 表示字符串类型的占位符
4、浮点类型的格式占位符
| 数据类型 | 十进制形式格式占位符 | 科学计数法格式占位符 |
|---|---|---|
| float | %f | %e |
| double | %lf | %le |
| long double | %Lf | %Le |
5、size_t的格式化占位符
sizeof返回一个size_t类型的无符号整数值,格式占位符是 %zu。
6、使用 printf 输出一个内存地址
可以使用占位符 %p
三、数据类型
基本数据类型
1、整数:int, short, long, long long ——目前只讨论整数(整数+char)的无符号类型
2、浮点:double, flout, long double
3、字符:char ——会讨论 无符号类型
函数及其他数据类型
1、size_t:①strlen(str) 返回str的长度,类型是 size_t
②sizeof:可以获取数据类型或变量、字面量的存储大小,单位是字节。
2、下述关于时间的函数,变量都需是time_t 类型
time(&变量) 获取当前日期赋值到变量中,该变量需是 time_t 类型
ctime(&时间值) 将时间戳转为字符串并返回,时间值需是 time_t 类型
difftime(时间值1,时间值2) 返回两个时间值的差,返回值是 double 类型,时间值需是 time_t 类型
int 类型的别名
1、布尔类型(bool)是 int 的别名
2、uint _t ——需要与头文件<stdint.h>配合使用
int8_t:8个二进制位1个字节的整数
int16_t:2个字节的整数
int32_t:4字节的整数
uint8_t:8个二进制位 1个字节的无符号整数
——为了增加数据类型的可移植性
注:size_t类型是:无符号整数值
附录
常用格式占位符速查表
(1)整数
| 格式占位符 | 含义 | 对应类型 |
|---|---|---|
| %d | 十进制有符号整数 | int |
| %u | 十进制无符号整数 | unsigned int |
| %hd | 十进制有符号整数 | short |
| %hu | 十进制无符号整数 | unsigned short |
| %ld | 十进制有符号整数 | long |
| %lu | 十进制无符号整数 | unsigned long |
| %lld | 十进制有符号整数 | long long |
| %llu | 十进制无符号整数 | unsigned long long |
| %x / %X | 十六进制无符号整数 | unsigned int |
| %#x | 显示前缀 0x 的十六进制整数,用于输出。 | unsigned int |
| %#X | 显示前缀 0X 的十六进制整数,用于输出。 | unsigned int |
| %zu | 输出数据的字节长度 | size_t |
(2)浮点
| *格式占位符* | *含义* | *对应类型* |
|---|---|---|
| %f | 浮点数的常规表示 | float、double |
| %lf | 浮点数的常规表示 | double |
| %Lf | 浮点数的常规表示 | long double |
| %e | 浮点数的科学计数法表示 | double、float |
| %le | 浮点数的科学计数法表示 | double |
| %Le | 浮点数的科学计数法表示 | long double |
(3)字符和字符串
| *格式占位符* | *含义* | *对应类型* |
|---|---|---|
| %c | 字符 | char |
| %s | 字符串 | char *、char[] |
(4)其他
| *格式占位符* | *含义* | *对应类型* |
|---|---|---|
| %p | 输出地址,通常以十六进制表示 | void * |

浙公网安备 33010602011771号