一、数据类型
1.什么叫数据类型?
——数据种类的划分
2.c语言中数据类型
基本数据类型——整型,字符型 ,浮点型
构造数据类型
指针类型
空类型
3.为什么需要划分数据类型?
整型——整数类型
浮点型——小数类型
字符型——符号类型
4.什么是编程?
——就是把人类的问题描述给计算机,让计算机解决
人类世界——>编程语言——>计算机世界
5.数据类型
常量——“在程序运行过程中”,不能改变的量
变量——“在程序运行过程中”,能改变的量
—————————————————————————————
二、整型
1.常量形式
123——十进制的整型常量
0x123——十六进制的整型常量
0123——八进制的整型常量
2.进制(进位的制度)——逢几进1(满几进1)
十进制——>二进制
方法:除2取余法
二进制——>十进制
方法:加权求和法
二进制——>八进制
对应关系: 1位八进制数对应3位二进制数
二进制——>十六进制
对应关系:1位十六进制进制数对应4位二进制数
3.整型变量
语法
定义变量
数据类型 变量名;
整型的类型:
① int——signed int 4个字节
② Short 2个字节
③ long 8个字节
④ long long 8个字节
Unsigned/signed
4.变量名——是一个名字(标识符)
怎么起名字?
① 数字、字母、下划线组成
② 开头不能是数字
③ 不能与关键字重名
④ 不要和预处理命令 及 库函数名重名
eg: int a_1;
int 1_a; //这个名字不合法
5.数据类型的大小
——表示的是该数据类型 所占内存空间的字节数
① int——signed int 4个字节
② Short 2个字节
③ long 8个字节
④ long long 8个字节
sizeof(运算数) 计算运算数所代表的数据类型占用的内存空间的字节数
运算数 可以是一个类型名
sizeof(int)
可以是变两名
sizeof(a)
可以是个常量或表达式
sizeof(10)
sizeof(a+10)
6.变量给值
int a = 10; //定义的同时给值 初始化
int a;
a = 10; //赋值
变量之所以能变 --- 变量实际上对应是一块可以被修改的空间
大小端:
小端:高高低低(高位数据存在高地址处,低位数据存在低地址处)
大端:与小端相反
X86——小端模式
51单片机——大端模式
7.整型数据的存储
int a = 123; //00 00 00 7B
[] ——二进制
0111 1011
int a = -123;
123 ——正数
-123 ——负数
整数
计算机最终存储的都是 他们的补码形式
正数—— 原码 反码 补码 都是一样的
负数—— 反码 + 1
eg:123
0111 1011 //原码
0111 1011 //反码
0111 1011 //补码
补码:(同余模)
钟表
12 - 7 = 5
12 + (-7) = 5
模 - 负数的绝对值 = 补码
12 - 7 = 5
12 + 5 = 17 --- 5
CPU (ALU) --- 加法器
int 型 4个字节
0 |000 0000 0000 0000 0000 0000 0000 0000
符号位| 数值位
0 正;1 负
无符号 --- 表示所有的二进制位 都是数值位
有符号 --- 表示有一位(最高位)充当了符号位,其余位是数值位
eg: -7
1|000 0000 0000 0000 0000 0000 0000 0111 //原码
1|111 1111 1111 1111 1111 1111 1111 1000 //反码
1|111 1111 1111 1111 1111 1111 1111 1001 //补码
f f f f f f f 9
负数的反码 是 原码 的符号位不变 其余位按位取反
8.考点
① 整数的溢出
② 整数存储和使用分开的
三、浮点型
1.浮点型的常量形式
① 1.23
② 1.23e-4(1.23E-4)——科学计数法形式1.23*10^-4
2.浮点型的变量
关键字
① float——单精度
② double——双精度
③ long double
定义变量:float f :
3.浮点型的大小
① float—— 4字节
② double——8字节
③ long double——16字节
4.浮点型的存储
eg:12.125
① 将十进制的小数写成二进制的小数
(整数使用除2取余法,小数使用乘2取整法)
12——1100
0.125 * 2 = 0.25 --- 0
0.25 * 2 = 0.5 --- 0
0.5 * 2 = 1 --- 1
0.001
二进制形式:1100.001
② 将二进制形式的小数写成科学计数法形式
1100.001——1.100001*2^3
③ 按照ieee 754标准存放
Float 4字节 32位
1位 | 8位 充当 指数位 | 23位
符号位 | | 尾数位
0 | 3 + 127(偏移量) | 100001
0100 0001 0100 0010 0000 0000 0000 0000 // 12.125 存到计算机中的样子
4 1 4 2 0 0 0 0
5.考点
浮点的比较
代码中出现的 变量 或 常量 一定有其对应的数据类型
代码中出现的 浮点型常量 默认识别为 double 类型
eg: 0.9 * 2 = 1.8 --- 1
0.8 * 2 = 1.6 --- 1
0.6 * 2 = 1.2 --- 1
0.2 * 2 = 0.4 --- 0
0.4 * 2 = 0.8 --- 0
0.8 * 2 = 1.6 --- 1
....
1.1101 ... * 2 ^ n
float
1位 符号位|8位 指数位 |23位 尾数位
+127
double
1位 符号位|11位 指数位 |52位 尾数位
+1023
浮点数的比较:
① 保证精度一致
② 类型一致
常量也可以指定类型:
0.9f //表示被识别为 float类型
123 //默认识别为 int类型
123L //识别为long类型
123LU //unsigned long
123LL //long long
123LLU //unsigned long long
四、字符型
'a' --编码--- 0101010
ASCII
1.字符型常量形式
'a' //字符常量 a这个常量
2.字符型变量形式
char
char ch; //一个字节
char ch = 'a';
ch这个变量中最终放的放的实际上是'a'对应的ascii码值 (整型)
char //tiny int --小整型
char 也一种整型类型 说char和整型之间是通用的
unsigned char ch; //[0 ~ 255]
signed char a = 10; //[-128 ~ 127]
3.字符型大小
一个字节
4.字符型的应用
0~32 控制字符(不可见字符)
48~57 数字字符 '0' ~ '9'
65 ~90 英文的26个大写字母的符号
97 ~122 英文的26个小写字母的符号
char ch = '1';
printf("%d\n",ch - 48); //数值1
printf("%d\n",ch - '0'); //数值1
大写转小写 +32
小写转大写 +32