C语言中的数据类型有很多种类,其中基本数据类型又分为很多种,比如int、char、short、long、float、double等。
计算机其实很傻很天真,因为它只认识0和1,也就是二进制,二进制是以”位“为单位的,8个位等于1个字节,即:8bit(位) = 1byte(字节),在计算机中数据的存储和传输都是以字节为单位,所以字节也很重要哦,我们得记住字节是啥,字节和位的关系是啥。
以32位设备为例,int占4个字节,char占1个字节,short占2个字节,long占4个字节,float占4个字节,double占8个字节。这里所占的内存大小,我们可以把它看作是女孩子的包包,char只占一个字节,就像一个小小的零钱包,short占2个字节,可以理解为它是一个钱包,不仅可以放下卡片,还可以放现金,int占4个字节,它能装的东西更多,在内存中所占的空间也就更大,我们就把它比喻成一个单肩包,钱包和卡包都能放在里面。所占内存越大,就可以看作是更大容量的包,这样是不是好理解了很多呢?
在编程中如何知道这个类型所占内存长度呢?以32位设备为例,我们可以用到计算内存长度的运算符sizeof来计算int类型的内存A长度,如下图:
当然其他的类型也可以用sizeof运算符计算出所占内存大小。
数据类型之间所占内存长度不同,在我们使用数据类型时会有什么影响呢?
假如有一个5米长的卷尺,那这个卷尺能测量的范围就只有0到5米的长度,如果将这个卷尺的长度增加到10米,那能测量的范围也就变成了0到10米,数据类型也是如此,所占内存长度不同,能表示的取值范围也不相同,如下图:
除了以上所述,还有一个是我们必须要知道的知识点,在计算机中,所有数据都是以二进制的方式去存储的,也就是说无论什么数据,在计算机中都是010110101这样的二进制数。
就像我们在银行ATM机存钱的时候,每次只能存入百元面值的钞票,但当我们通过手机银行或者银行柜台取钱时,可以选择取出任意面值大小的钞票,我们无论以什么样的形式取或存,都改变不了的事实就是银行里面存的始终都是钱。
以char型为例:
因为存的是单个的字符,在输出的时候需要用到%c来输出单个的字符。在ascii码中字符a表示的十进制数是97,如果用十进制的方式%d去输出的话,也可以得出97。
那如果用int型去存储呢?
所以由此可以看出其实在计算机的内存中存储的其实不是‘a’这个字符,而是97这个数字的二进制表达式,·只是我们现在要用字符的形式%c输出它,所以就可以得到我们看到的’a’。
基本数据类型的了解到此就结束啦,通过这篇文章我们知道了各个基本数据类型所占内存的长度、取值范围和计算机中存储的数据都是二进制数,那同学们思考一下,在计算机中小数和负数该怎么存储和表示呢?