字节长度就是一个变量所占的内存空间的大小。数据有着不同的数据类型,不同的数据类型会分配不同的空间大小。在c语言中有字节,半字,字三种存储数据的单位,其关系是
1个字=4个字节=32位,一个半字=2两个字节=16位,一个字节=8位。
int 4 字节 char 1字节
short 2字节 double 8字节
long 4字节 float 4字节
任何类型的指针其字节长度都为4,因为指针保存的是地址,地址的长度是固定的,由操作系统的位数决定。
如:int *a[7] 28字节
int (*a)[7] 4字节
取值范围:任何一个数据类型都有其取值范围。例如我们推出char的取值范围。
char 是一个字节长度,所以其二进制数就是8位。我们知道在二进制中
正数的原码=正数补码
负数的补码=原码取反+1
负数的原码=补码取反+1
计算机中保存的是补码
首先是无符号的char型 unsigned char
最小值 0 0 0 0 0 0 0 0 0
最大值 1 1 1 1 1 1 1 1 255
有符号char型 signed char
正数的最小值 0 0 0 0 0 0 0 0 0
正数的最小值 0 1 1 1 1 1 1 1 127
负数的最小值 1 0 0 0 0 0 0 0 -128
负数的最大值 1 1 1 1 1 1 1 1 -1
所以无符号的char型取值范围为0-255,有符号的char型取值范围为-128-127.
在计算机中经常会出现数据溢出的情况,例如 char ch=-128;ch =ch-1;其运算结果为127,如果是127+1;其结果就是-128
其运算过程为:
-128的二进制是 1 0 0 0 0 0 0 0
-1的二进制是 1 1 1 1 1 1 1 1
结果是 0 1 1 1 1 1 1 1 =127
在计算机中只进行加法运算所以-128-1就是-128+(-1),所以其结果为127。 同理127+1的结果是-128。