为什么

  内存是在计算机中一片很大且连续的空间,而计算机并不会灵活的根据用户输入的内容来分配相应大小的空间,所以多了的话浪费资源,少了的话不够用,而且不同的数据不可能使用同一种方式存储(例如字符和整形以及浮点型的存储方式都有很大的区别),于是不同的数据类型就产生了。

有什么

  C语言中常用的数据类型有7种

char //字符型:1字节
short //短整型:2字节
int //整型:4字节
long //长整型:4字节
long long //更长整型:8字节
float //单精度浮点型:4字节
double //双精度浮点型:8字节
sizeof(xxx);

 

  最后一行展示的sizeof()是可以用来计算每种数据类型在自己计算机中到底占多少个字节的,因为上述所展示的只是常规的数据类型所占用的空间大小,然而所占位数和机器字长及编译器都有关系,以下是网络上找的数据(具体情况请具体验证)

以char, short, int, long为例:

16位编译器:(Turbo C/Turbo C++sizeof(char) = 1 
sizeof(short) = 2 
sizeof(float) = 4 
sizeof(double) = 8 
sizeof(int) = 2 
sizeof(long) = 4 
sizeof(long double) = 16 
sizeof(void *) = 4
 

32位编译器:(Visual Studio C++) 
sizeof(char) = 1 
sizeof(short) = 2 
sizeof(float) = 4 
sizeof(double) = 8 
sizeof(int) = 4 
sizeof(long) = 4 
sizeof(long long) = 8 
sizeof(void *) = 4 (表示指针类型数据长度)
 

64位编译器: 
sizeof(char) = 1 
sizeof(short) = 2 
sizeof(float) = 4 
sizeof(double) = 8 
sizeof(int) = 4 
sizeof(long) = 8 
sizeof(long long) = 8 
sizeof(void *) = 8

注:int型占4个字节,一个字节是8个bit,就是4 * 8 = 32 个二进制位,所能存储的数据大小(默认无符号)就是从0 ~ 2 ^ 32 - 1大概就是42亿,依次类推。