文章目录
1 int类型
1.1 八进制和十六进制的表示
0x或0X前缀表示十六进制值;0前缀表示八进制
printf("%d", xxx); // 十进制打印
printf("%o", xxx); // 八进制打印
printf("%#o", xxx); // 八进制打印,显示前缀
printf("%lo", xxx); // 八进制的long类型
printf("%ho", xxx); // 八进制的short类型
printf("%x", xxx); // 十六进制打印
printf("%#x", xxx); // 十六进制打印,显示前缀
printf("%lx", xxx); // 十六进制的long类型
printf("%hx", xxx); // 十六进制的short类型
printf("%u", xxx); // unsigned int类型
printf("%ld", xxx); // long类型
printf("%hd" xxx); // short类型
printf("%ul" xxx); // unsigned long类型
printf("%lld", xxx); // long long类型
printf("%llu" xxx); // unsigned long long类型
1.2 其他整数类型
类型 | 描述 |
---|---|
short | |
long | |
long long | |
unsigned | 只用于非负值 |
unsigned short | |
unsigned long | |
unsigned long long | |
signed | 在类型前添加关键字signed表示有符号类型,与short、long等有符号类型相同 |
1.3 变量声明
long long类型可以变量声明10l或10L表示;unsigned long long类型可以变量声明10ull或10ULL表示,在变量前添加类型前缀表示。
2 char类型
printf("%c", xxx);
printf("%d", xxx); // 打印字符对应的ASCII码值
2.1 其他类型
类型 | 描述 |
---|---|
unsigned char | |
_Bool类型 | C99添加了_Bool类型表示布尔值,即逻辑值true和false,1表示true,0表示false |
3 可移植类型
C99新增了两个头文件 stdint.h
和 inttypes.h
,以确保C语言的类型在各系统中的功能相同。
stdint.h
头文件定义的一些类型:
类型 | 描述 |
---|---|
int32_t | 表示32位的有符号整数类型,在不同系统代表不同类型,如32位int系统是int类型,int为16位、long为32位系统中表示long类型;属于精确宽度整数类型,计算机底层系统可能不支持 |
int_least8_t | 表示可容纳8位有符号整数值的类型中宽度最小的类型的一个别名。如果某系统的最小整数类型是16位,可能不会定义int8_t类型,该系统仍可使用int_least8_t类型,但可能把该类型实现为16位的整数类型;属于最小宽度类型,用于在不支持精确宽度整数类型使用 |
int_fast8_t | 被定义为系统中对8位有符号值而言运算最快的整数类型的别名;属于最快最小宽度类型 |
intmax_t | 有符号最大整数类型,可存储任何有效的有符号整数值;有可能比long long或unsigned long类型更大 |
unitmax_t | 表示最大的无符号整数类型;有可能比long long或unsigned long类型更大 |
#include<stdio.h>
#include<inttypes.h>
int main(void) {
int32_t me32 = 45933945;
printf("me32 = %d\n", me32);
// PRId32被定义在inttypes.h中替换"d",等价于
// printf("me32 = %d\n", me32);
printf("me32 = %" PRId32 "\n", me32);
}
4 float、double和long double
e后面的数字代表10的指数
pinrtf("%f", xxx); // float和double类型
printf("%e", xxx); // 指数计数法
printf("%Lf", xxx); // long double类型
5 复数和虚数
3种复数类型:
类型 | 描述 |
---|---|
float_Complex | 包含两个float类型,分别表示复数的实部和虚部 |
double_Complex | |
long double_Complex |
3种虚数类型:
类型 |
---|
float_Imaginary |
double_Imaginary |
long double_Imaginary |
如果包含 complex.h
头文件,可用complex代替_Complex,imaginary代替_Imaginary,还可以用I代替-1的平方根。
6 类型大小
#include<stdio.h>
int main(void) {
printf("%zd", sizeof(int)); // 4 bytes
printf("%zd", sizeOf(char)); // 1 bytes
printf("%zd", sizeof(long)); // 8 bytes
printf("%zd", sizeof(long long)); // 8 bytes
printf("%zd", sizeof(double)) // 8 bytes
printf("%zd", sizeof(long double)); // 16 bytes
}