生活中无时无刻都在跟数据打交道
- 例如:人的体重、身高、收入、性别等数据等
- 在我们使用计算机的过程中,也会接触到各种各样的数据
- 例如: 文档数据、图片数据、视频数据等
静态的数据
- 静态数据是指一些永久性的数据,一般存储在硬盘中。硬盘的存储空间一般都比较大,现在普通计算机的硬盘都有500G左右,因此硬盘中可以存放一些比较大的文件
- 存储的时长:计算机关闭之后再开启,这些数据依旧还在,只要你不主动删掉或者硬盘没坏,这些数据永远都在
- 哪些是静态数据:静态数据一般是以文件的形式存储在硬盘上,比如文档、照片、视频等。
动态的数据
- 动态数据指在程序运行过程中,动态产生的临时数据,一般存储在内存中。内存的存储空间一般都比较小,现在普通计算机的内存只有8G左右,因此要谨慎使用内存,不要占用太多的内
存空间- 存储的时长:计算机关闭之后,这些临时数据就会被清除
- 哪些是动态数据:当运行某个程序(软件)时,整个程序就会被加载到内存中,在程序运行过程中,会产生各种各样的临时数据,这些临时数据都是存储在内存中的。当程序停止运行或者计算机被强制关闭时,这个程序产生的所有临时数据都会被清除。
既然硬盘的存储空间这么大,为何不把所有的应用程序加载到硬盘中去执行呢?
- 主要原因就是内存的访问速度比硬盘快N倍
- 静态数据和动态数据的相互转换 ,也就是从磁盘加载到内存
- 动态数据和静态数据的相互转换,也就是从内存保存到磁盘
作为程序员, 我们最关心的是内存中的动态数据,因为我们写的程序就是在内存中运行的, 程序在运行过程中会产生各种各样的临时数据,为了方便数据的运算和操作, C语言对这些数据进行了分类, 提供了丰富的数据类型
数据类型介绍C语言的数据类型有:基本类型、空类型、构造类型和指针类型。其中构造类型中包括共用体、数组、结构体三种类型。基本类型中还包括整型、浮点型、字符型和枚举型四种类型。
在C语言中,承载一系列信息的数字或中字符都属于数据类型,计算机不能直接识别不同的类型,所以在使用变量时需要在声明语句中指定其数据类型。C语言的数据类型,通俗的理解就是将不同的物品放在不同的盒子中,比如小数存放在浮点型、整数存放在整型、字符存放在字符型等等,在编写C语言时需要根据存放数据的不同,定义不同的类型变量。
例如:int整型一般是分配4个字节存储空间,double双精度浮点型分配8个字节的存储空间;变量的数据类型同时决定着该变量能取哪些值和进行哪些运算。如整数类型只能取整数值,小数类型可以表示小数,整数和小数可以进行加减乘除数学运算。
基本数据类型C语言种最基本数据类型是算术类型,包括整数类型和浮点数类型。字符类型、枚举类型本质也是整数类型;整数类型细分有符号和无符号整数、长整数和短整数;不同整数类型区别是存储长度不一样、取值范围大小不一样;浮点数类型比较简单,都是有符号的,分为单精度和双精度浮点数。
整数类型以及声明关键字包括:
- 字符类型:char (至于是有符号或无符号由编译器实现自定义)
- 有符号字符类型:signed char
- 无符号字符类型:unsigned char
- 有符号短整型:short, signed short, short int, signed short int
- 无符号短整型:unsigned short, unsigned short int
- 有符号整型:int, signed, signed int
- 无符号整型:unsigned, unsigned int
- 有符号长整型:long, signed long, long int, signed long int
- 无符号长整型:unsigned long, unsigned long int
浮点类型声明包括:
- 单精度浮点型:float
- 双精度浮点型:double
- 长双精度浮点型:long double
char 1字节,int 4字节, long 8字节,float 4字节,double 8字节;每种类型存储空间大小,所占字节数,和计算机位数有关,不同机器数据类型大小不一样,可以通过 sizeof() 关键字进行每种类型大小的计算,确定存储空间和取值范围。
#include32位编译器和64位编译器区别int main() { printf("int = %dn",sizeof(int)); printf("short = %dn",sizeof(short)); printf("long int = %dn",sizeof(long int)); printf("long long int = %dn",sizeof(long long int)); printf("char = %dn",sizeof(char)); printf("_Bool = %dn",sizeof(_Bool)); printf("float = %dn",sizeof(float)); printf("double = %dn",sizeof(double)); printf("long double = %dn",sizeof(long double)); }
32位编译器
- char :1个字节
- char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节)
- short int : 2个字节
- int: 4个字节
- unsigned int : 4个字节
- float: 4个字节
- double: 8个字节
- long: 4个字节
- long long: 8个字节
- unsigned long: 4个字节
64位编译器 (目前基本都是64的了)
- char :1个字节
- char*(即指针变量): 8个字节
- short int : 2个字节
- int: 4个字节
- unsigned int : 4个字节
- float: 4个字节
- double: 8个字节
- long: 8个字节
- long long: 8个字节
- unsigned long: 8个字节



