sizeof:编译器让我们来看内存空间容量;
int,double,float等等一些关键字可以看成是让我们来限制内存大小
每个数据类型所代表的内存大小都不同(由编译器决定)
(这里应该cpu,当时画错了,兄弟姐妹们,见谅!)
硬件芯片操作最小单位为:bit(位) 1/0 1代表高电平,0代表低电平
软件操作中最小单位为byte(字节):8bit==1B(若是用bit做单位,软件开发
及其繁琐) 一般用char
char是硬件能在软件中体现出的最小单位;
char场景:硬件数据处理的最小单位:
例子:char buf[x] int buf
假设有123这个数据,如果用int接受,所需内存为4B,则会造成浪费,
char只有1B;
8bit最多能代表256个数字(0与1的排列组合,2的8次方);char最多就是1B,也就是8bit,若char a=300,则已经造成溢出了。
这又涉及到编译器最优处理大小:系统一个周期,所能接受的最大处理单位;例如一个系统一个周期能够处理32bit的数据,也就是32位系统,就是 4B,若是能够把这32位都跑满,性能最高,低于32都不行,同时int定义:
32bit=4B=int;(32位系统)或 16bit=2B=int;(16位系统)
所以int在各种处理器中的大小都是不同的。如果用于数据的处理,int比char好,int容量大,还能达到最优处理大小,在汇编语言中int 比char的效率高。
char更多用于硬件处理,因为后期你需要面临各种引脚的高低电平设置,而这恰恰是嵌入式开始入坑的基础。
再说到前面的,若这个处理器是2B的,2B=16bit,所能代表的数最大为65535。但是我想保存int a=66535,怎么办?
我们可以在66535加一个L,就是int a=66535L(L大小写无所谓)相当于一个long字符,需要用到进位标志。
链接:http://note.youdao.com/noteshare?id=f898d5ee72a5b3d9c4dd34142fd8d6d9&sub=7C6F89569F2144A0B3E2B784BE36ADAD
网友评论