导航:
1. 数据类型
2. 自定义类型
3. 逻辑结构
4. 类型修饰符
5. 杂项
----->x<------------->x<--------------->x<--------------->x<------------->x<-----
1 数据类型 (限制 占用内存大小 的 关键字)
-- char
硬件最小单位:bit; 软件最小单位 char; [ char(B)=8 bit ]
char [1 byte]= 8bit = 256 种状态.
进制: 十进制 八进制 十六进制 二进制
在硬件描述中 一个char _ _ _ _ _ _ _ _ 8bit 的内存 空间
如果我这样写:
char a = 0x1a;
转换成2进制就是 0001 1010 这样就是对这8个空间为进行赋值.
-- int 编译器能处理的最优处理单位.
32位系统 一个周期能走满 32bit == 4B 就是int 的大小.
16位系统 一个周期能读取 16bit == 2B 就是 shot (int) 的大小.
64位系统 一个周期能读取 64bit == 8B 就是int 的大小.
#所以, int的大小不是固定的,是根据操作系统和编译器所决定 .
什么时候用int? 什么时候用char?
如果用来 描述 数据, 就用int. a.容量大; b.能达到系统的最优处理大小.
如果用来 描述 硬件, 一般使用char.
-- long 至少4B 大小的数据长度.
long的长度最少是4byte.什么意思呢?意义体现在16位的操作系统中. 在16位的系统中,int的大小只有2byte,
2b == 65353 种状态.如果超过了,就要使用 bouble 或者 long .因为long至少保证 4byte的大小.
-- unsigned 和 signed 区别 最高字节 是 符号位 还是 普通的数据
unsigned 无符号 一般用来采集数据
signed 有符号 就是用来定义用于计算的数值
二者在位移运算中体现差异.因为有符号数的第一位是符号位正0 负1.
char a = -1 (0xff) a 在不断左移的过程中, 并不会变成0, 因为 符号位 一直在占位.
unsigned char b = 0xff b 在不断右移过后,会变成 0x00.
-- float 和 double 浮点运算
浮点数 在 内存中的表现形式 跟 整数 是完全不一样的 .
float 4byte
double 8byte 非常浪费内存空间,但是精确.
-- void 这是最神奇的一种数据类型.
因为它可以转换成 任何数据类型,它更多的意义是 声明 标志,而不是 使用 标志 .
void a; a = (int)b;
2.未完待续...
原文地址:https://www.cnblogs.com/kmist/p/9867917.html