C语言(二)数据类型
基本数据类型
1. 整型(Integer)
1.1 基本整型类型
int
通常表示一个标准的整型变量,大小和范围依赖于具体的编译器和平台。short
表示较短的整型变量,通常占用 $2$ 个字节。范围是 $-32,768$ 到 $32,767$ 。long
表示较长的整型变量,通常占用 $4$ 个字节或更多。范围依赖于具体的编译器和平台。long long
表示更长的整型变量,通常占用 $8$ 个字节。范围依赖于具体的编译器和平台。
1.2 无符号整型类型
unsigned int
无符号整型,表示非负整数,范围从 $0$ 到最大正值。unsigned short
无符号短整型。unsigned long
无符号长整型。unsigned long long
无符号更长整型。
2. 字符型(Character)
char
用于储存字符(如,字母或标点符号),但是 char
也是整数类型,因为计算机是根据这个整数值,去编码表中找对应的字符。unsigned char
无符号字符类型,范围是 $0$ 到 $255$ 。signed char
明确表示带符号的字符类型。
1 | //示例 |
3. 浮点型(Floating Point)
float
单精度浮点数,通常占用 $4$ 个字节,精度约为 $6-7$ 位小数。double
双精度浮点数,通常占用 $8$ 个字节,精度约为 $15-16$ 位小数。long double
扩展精度浮点数,通常占用 $12$ 个字节或更多,具体取决于编译器和平台。
4. 布尔型(Boolean)
bool
在C99标准中引入,表示布尔类型,值为 true
或 false
。需要加上头文件 #include <stdbool.h>
这是c语言专门的用来表示真和假的类型:true
为真,false
为假
在c语言中,有时也用 $0$ 表示假,非 $0$ 的数值表示真。
5. 数据类型的修饰符
C语言还提供了一些修饰符,用于改变基本数据类型的属性:signed
明确表示带符号类型,可用于整型和字符型。unsigned
明确表示无符号类型,可用于整型和字符型。short
表示较短的整型。long
表示较长的整型或双精度浮点型。
6. 代码示例
1 |
|
7. 数据溢出与截断
数据溢出 是指将一个超出变量所能表示范围的值赋给该变量。在进行运算的时候,有可能会发生溢出或者截断,比如下面这个:
1 |
|
在这个例子中,largeNumber
的值是 $300$,而 char
类型只能表示 $-128$ 到 $127$ 的范围。因此,$300$ 会被截断,并且结果可能是奇怪的值。
数据截断 发生在一个值被赋给一个比它小的类型变量时,超出的部分会被丢弃。(这里的小
是指范围小)
1 |
|
8. 自动类型提升
自动类型提升是指在表达式中,取值范围小(或容量小)的类型会被自动提升为取值范围大(或容量大)的类型。例如,当 int
和 float
一起参与运算时,int
会被升级为 float
。
1 |
|