整型数据类型:
- int: 占用2或4个字节 不同的环境下长度不同
- short int: 只占用2个字节 可以简写为short
long int: 大于等于int长度 不同的环境下长度不同 可以简写为long
C语言并没有严格规定 short、int、long 的长度,只做了宽泛的限制:
short 至少占用 2 个字节。
- int 建议为一个机器字长。32 位环境下机器字长为 4 字节,64 位环境下机器字长为 8 字节。
- short 的长度不能大于 int
long 的长度不能小于 int。
总结:
2 ≤ short ≤ int ≤ long
short、int、long 是C语言中常见的整数类型,其中 int 称为整型,short 称为短整型,long 称为长整型。
short 可以节省内存,long 可以容纳更大的值。查看数据类型的长度
通过sizeof操作符查看指定的数据类型的长度
```c int num1 = 1; short int num2 = 1; long int num3 = 1; printf(“该平台下int 的长度=%d\n”, sizeof(int)); //4 printf(“int 的长度=%d\n”, sizeof(num1)); //4 printf(“short int 的长度=%d\n”, sizeof(num2)); //2 printf(“long int 的长度=%d\n”, sizeof(num3)); //4
getchar();
<a name="AhjPy"></a>
### 内存优化
在现代操作系统中,int 一般占用 4 个字节(Byte)的内存,共计 32 位(Bit)。如果不考虑正负数,当所有的位都为 1 时它的值最大,为 232-1 = 4,294,967,295 ≈ 43亿,这是一个很大的数,实际开发中很少用到,而诸如 1、99、12098 等较小的数使用频率反而较高。<br /> **使用 4 个字节保存较小的整数绰绰有余,会空闲出两三个字节来**,这些字节就白白浪费掉了,不能再被其他数据使用。现在个人电脑的内存都比较大了,配置低的也有 2G,浪费一些内存不会带来明显的损失;而在C语言被发明的早期,或者在单片机和嵌入式系统中,内存都是非常稀缺的资源,所有的程序都在尽力节省内存。
<a name="awEoE"></a>
### 符号位
short、int 和 long 类型默认都是带符号位的,符号位以外的内存才是数值位。<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/519009/1618884982135-c47702c1-98f1-4ca0-91a5-902c47025dec.png#align=left&display=inline&height=112&id=ucd95dc28&margin=%5Bobject%20Object%5D&name=image.png&originHeight=223&originWidth=1241&size=29091&status=done&style=none&width=620.5)<br />符号位, 0 表示正数, 1 表示负数。默认为正数0<br />如果我们只考虑正数的话,那么就可以不需要符号位,数据类型的所有位都用来存储数值,这样数值的范围就更大了。
```c
//只需要在数据类型前面加上 unsigned 关键字,即无符号数,只能表示正数。
unsigned short a = 12;
unsigned int b = 1002; //如果是unsigned int类型,那么可以省略 int ,只写 unsigned
unsigned long c = 9892320;