Basic Data Type
基础数据类型
Overview
1. Intenger
1.1. int, long, short, unsigned
int 可以与 short 等关键字搭配,构造更具体的 int:
int代表整数short代表短long或者long long代表长unsigned代表无符号
不同的 int 在不同电脑中占用字节数不同,这也就代表了不同电脑的某种 int 可以表示的范围不同。
一个具体写在程序中的数字叫做字面量,它可以加入前缀来表示不同的进制:
十进制(Decimal):不加前缀,默认就是十进制。
二进制(Binary):0b,0B。
八进制(Octal):0。(数字 0️⃣,不是字母 O)
十六进制(Hexadecimal):0x,0X。
也可以为字面量加入后缀,来代表它是不同的整数类型:
u:无符号数。L:Long。LL,UL,ULL,自由组合
最后,在 printf 函数中,要用不同的占位符来表示这些类型,下面是总结表:
char
%c
\0x41
\0101
N.A.
int
%d
0x41
0101
65
unsigned int
%u
0x41u
0101u
65u
long
%ld
0x41L
0101L
65L
unsigned long
%lu
0x41UL
0101UL
65UL
long long
%lld
0x41LL
0101LL
65LL
unsigned long long
%llu
0x41ULL
0101ULL
65ULL
1.2. char
char 代表字符,采用 ASCII 码,占用内存 8 bits。
✅:
char a = 'T';❌:
char b = "T";
除了普通的数字与字母,特殊含义的字符是转义字符
\a
警报(ANSI C)
\b
退格
\f
换页
换行
回车
水平制表符
\v
垂直制表符
\\
反斜杠(\)
'
单引号
"
双引号
?
问号
\0oo
八进制值(oo必须是有效的八进制数,即每个o可表示0~7中的一个数)
\xhh
十六进制值(hh必须是有效的十六进制数,即每个h可表示0~f中的一个数)
1.3. _Bool
C99添加了布尔类型,占用 1bit。 我们可以直接就使用
_Bool也可以通过引入
stdbool.h来使用bool
1.4. stdint.h & inttypes.h
stdint.hinttypes.hstdint.h:用于各种 int 的声明
inttypes.h:用于各种 int 的 printf
2. Decimal
2.1. float, double, long double
占用字节数与表示范围
float
大约 -3.4e38 到 3.4e38
通常 4 字节
double
大约 -1.8e308 到 1.8e308
通常 8 字节
long double
大约 -1.2e4932 到 1.2e4932
通常 16 字节
浮点型常量
double a = .2; // 可以省略整数
float b = 2. // 可以省略小数,但不能都省略
float c = 6.6e3-34; // 科学计数法: 基数+e+指数,不能有空格
double d = .8E-5; // 也可以用 E不同格式的 printf
普通
%f
科学计数法(e)
%e
科学计数法(E)
%E
自动选择
%g
浮点数会产生舍入误差(因为 10 进制转换 成 2 进制有的数会转换成无限的小数)
2.2. Complex, Imaginary
C99
复数:float _Complex, double _Complex, long double _Complex
虚数:float _Imaginary, double _Imaginary, long double _Imaginary
complex.h复数:float complex, double complex, long double complex
虚数:I, float imaginary, double imaginary, long double imaginary
最后更新于
这有帮助吗?