数据类型是计算机程序中用来表示数据的类别,它们定义了数据的大小、存储方式和可执行的操作。在编程中,数据类型非常重要,因为它们决定了变量可以存储什么类型的值以及可以进行哪些操作。
常见的数据类型包括:
- 整数类型(Integer):用于存储整数值,如int、long等。
- 浮点数类型(Floating-point):用于存储小数或实数值,如float、double等。
- 字符类型(Character):用于存储单个字符,如char。
- 布尔类型(Boolean):用于存储真(true)或假(false)的值,如bool。
- 字符串类型(String):用于存储一系列字符组成的文本,如string。
- 数组类型(Array):用于存储一组相同类型的数据元素,如int[]、float[]等。
- 结构体类型(Struct):用于组合不同类型的数据元素,形成一个新的数据类型。
- 指针类型(Pointer):用于存储内存地址的变量,通常用于动态内存分配和函数参数传递。
- 枚举类型(Enumeration):用于定义一组命名的常量值,如enum Color {RED, GREEN, BLUE}。
- 联合体类型(Union):类似于结构体,但所有成员共享同一块内存空间,只能同时使用其中一个成员。
根据编程语言的不同,可能还存在其他特定的数据类型。选择合适的数据类型对于编写高效、可读性强的程序至关重要。
这里我们取前几种数据类型简单分析
1.整型
概念
表达数据类型的数据为整数
需要注意的地方
1. int
的本意是
integer
,即整数的意思。
2. int a
代表在内存中开辟一块区域,称为
a
,用来存放整数,
a
称为整型变量。
3.
变量
a
所占用的内存大小,在不同的系统中是不一样的,
64
位系统 典型的大小是4
字节。
4.
变量
a
有固定的大小,因此也有取值范围,典型的范 是:-2147483648
到
2147483647
。
整型修饰符
short
:用来缩短整型变量的尺寸,减少取值范围并节省内存,称为整型。
long
:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长整型。
long long
:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长长整型。
unsigned
:用来去除整型变量的符号位,使得整型变量只能表达非负整数。
signed
:表示有符号,一般情况下省略。
需要注意的地方
1. int
的本意是
integer
,即整数的意思。
2. int a
代表在内存中开辟一块区域,称为
a
,用来存放整数,
a
称为整型变量。
3.
变量
a
所占用的内存大小,在不同的系统中是不一样的,
64
位系统典型的大小是4
字节。
4.
变量
a
有固定的大小,因此也有取值范围,典型的范围是:-2147483648
到
2147483647
。
整型修饰符
short:用来缩短整型变量的尺寸,减少取值范围并节省内存,称为整型。
long
:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长整型。
long long
:用来增长整型变量的尺寸,增大取值范围并占用更多的内存,称为长长整型。
unsigned
:用来去除整型变量的符号位,使得整型变量只能表达非负整数。
signed
:表示有符号,一般情况下省略。
short int
a
;
//
短整型
-10000
long int
b
;
//
长整型
-10000000000
long long int
c
;
//
长长整型
-100000000000000000
unsigned int
d
;
//
无符号整型
10000
unsigned short int
e
;
//
无符号短整型
unsigned long int
f
;
//
无符号长整型
unsigned long long int
g
;
//
无符号长长整型
使用整型修饰符后,关键字
int
可以省略。
short
a
;
//
短整型
long
b
;
//
长整型
long long
c
;
//
长长整型
unsigned
d
;
//
无符号整型
unsigned short
e
;
//
无符号短整型
unsigned long
f
;
//
无符号长整型
unsigned long long
g
;
//
无符号长长整型
符号位
有符号的整型数据,首位为符号位,
0
表示正数,
1
表示负数。
无符号的整型数据,没有符号位。
编码形式:(计算机中存储和运算的都是
补码
)
原码:正数直接使用二进制来表达,比如
a=100
,在内存中是00...001100100
补码:负数用绝对值取反加一来表达,比如
a=-3
,在内存中是11...1111111101
注意负数的补码在取反加一的时候,符号位是不变的。
编码形式:(计算机中存储和运算的都是 补码)
原码:正数直接使用二进制来表达,比如
a=100
,在内存中是 00...001100100
补码:负数用绝对值取反加一来表达,比如
a=-3
,在内存中是 11...1111111101
注意负数的补码在取反加一的时候,符号位是不变的。
数据表示范围:
溢出:
超出数据所能表达的范围,称为
溢出
,就像汽车里程表,
最大值和最小值是相邻的。
进制:源码中可以使用八进制、十进制或者十六进制,
但实际数据中一律是二进制
。
十进制(默认), 比如
1234
。
八进制,比如
012
(
0~7
),
013
中
0
表示八进制的标识符,不可省略。
十六进制,比如
0x6FFAB
,
0xaa1234
,(
0~9 ~a(10) ~ f(15
)
),
一个F表示四个
1
。
0x
为十六进制的标识符,不可省略。
格式控制符
int
整型:
%d
unsigned int
无符号整型:
%u
short
整型:
%hd,h
代表
half
,即一半的存储字节
long
整型:
%ld
long long
整型:
%lld
显示不同进制的前缀
: %#o
、
%#x
2.浮点型(实型)
概念
用来表达实数
(
有理数和无理数
)
的数据类型
分类
单精度浮点型
(float)
,
64
位机中典型尺寸是
4
字节
双精度浮点型
(double)
,
64
位机中典型尺寸是
8
字节
长双精度浮点型
(long double)
,
64
位机中典型尺寸是
16
字节
占用内存越多,能表达的精度越高
3,字符型
计算机中存储都是
1
和
0
,因此各种字符都必须被映射位某个数字才能存储到计算机中,这种映射关系形成的表称为ASCII
码表。
字符本质上就是一个单字节的整型,支持整型所有的运算。

ascll表我们记少不记多,记住重点的几个推就行
0
--->
空字符
32
--->
空格字符
' '
48
--->
数字字符
'0'
65
--->
大写字母
'A'
97
--->
小写字母
'a'
转义字符
转义字符,所有的
ASCII
码都可以使用
\数字
(
一般是
8
进制数
)
来表示,而是在
c 中定义一些\
字母来区分原来字母的含义,我们把这种方式称为转义比如
字符 :
'n'
表示 字母
n
字符 :
'\n'
表示 回车键
常用的转义字符有:
'\t'
:
水平制表符
tab
键
'\b'
:
退格符
'\a'
:
告警符
'\ddd'
:
ddd
表示
8
进制数,输出该数是对应
ASCII
表的
8
进制
//
注意
\ddd
是
\
后面只能写
3
个
8
进制数,
0-7
'\xhh'
:
xhh
表示十六进制,输出该数是对应
ASCII
表的十六进制
//printf("'\xhh'");
写法错误
//
注意
\hh
是
\x
后面只能写
2
个
16
进制数,
0-f
4.布尔类型(重点)
概念
布尔型数据只有真、假两种取值,
非零为真,零为假
。
注意
1.
逻辑真除了
1
之外,其他任何非零数值都表示逻辑真,
等价于
1
。
2.
使用布尔型
bool
定义变量时需要包含系统头文件
stdbool.h
。
3.
布尔型变量在计算的时候,使用的是数值
1
或
0
。
布尔型数据常用在逻辑判断、循环控制、函数返回等场合。
bool只有两种状态,要么为1(真),要么为0(假)
不管对bool赋予任意值,非零为真零为假
5.字符串
定义:
双引号
引起来的字符序列。
在内存中的存储
在内存中实际上是多个连续字符的组合 任何字符串都以一个'\0'
作为结束标记
注意:有关与不同的编码格式对应存储中文空间问题:
在
GBK
编码格式的文件当中,一个中文占用
2
个字节
在
UTF-8
编码格式的文件当中,一个中文占用
3
个字节,
linux
操作系统默认文
件格式为
UTF-8
编码格式,如果文件不是
UTF-8
则会显示乱码。
6.常量与变量
概念
不可改变的内存称为常量,可以改变的内存称为变量
常量的类型:

类型转换
概念:不一致但
相互兼容的数据类型
,在同一表达式中将会发生类型转
换。
转换模式:
隐式转换:系统按照隐式规则自动进行的转换
(
低精度到高精度
)
强制转换:用户显式自定义进行的转换
隐式规则:从小类型向大类型转换,目的是保证不丢失表达式中数据的
精度
7.数据类型的本质
概念:各种不同的数据类型,本质上是用户与系统对某一块内存数据的解释方式的约定。
推论:
类型转换,实际上是对先前定义时候的约定,做了一个临时的打破。理论上,可以对任意的数据做任意的类型转换,但转换之后的数据解释不一定有意义。
总结:其实就是申请一块对应数据类型的空间来存放数据,称为数
据类型
8、整型数据尺寸
概念:整型数据尺寸是指某种整型数据所占用内存空间的大小,C语言标准并未规定整型数据的具体大小,只规定了相互之间的
“
相对大小 ”
比如:
short
不可比
int
长
long
不可比
int
短
long
型数据长度等于系统字长
系统字长:
CPU
一次处理的数据长度,称为字长。比如
32
位系统、
64位系统。
典型尺寸:
char
占用
1
个字节
short
占用
2
个字节
int
在
16
位系统中占用
2
个字节,在
32
位和
64
位系统中一般都占用
4个字节
long
的尺寸等于系统字长
long long
在
32
位系统中一般占用
4
个字节,在
64
位系统中一般占用8个字节