这篇谈下c 语言的基本数据类型。首先说明下,c语言中只存在以下四种基本类型,char、int、float和double。其它几种类型都是基于这些类型发展起来的。 首先看下图1定义变量的代码:
#include int main() { int a = 0; return 0;}
图1 定义变量
咱们说过,变量是一个容器(在内存中就是个有“地盘”的地址)
。为了方便使用这个“地盘”,c语言让你起一个名字(也就是这里的a这个变量名),c语言的变量名其实就是给容器起了个好记的名字而已(仅仅是为了让人类好记),在c语言的内部可是靠偏移地址来找的呢,和咱们理解的方式完全不一样。想想好多时间看到的美好的东西都不过是假象而已。只要求“地盘”就万事大吉了吗?还得需要在要求完“地盘”的时候,给出要什么样的地盘。就像在现实生活中,申请资源,不还得说明需要多少资源及申请这些资源后用来干啥。细想下,c的设计处处透漏人性啊。
那如何向编译器说明申请何种类型的“地盘”,这时候c语言就要求用
类型说明符
来进行说明。类型说明符是c语言形形色色“地盘”的开始,有了这些形形色色的地盘,就可以构建丰富多彩的c语言世界了呢。
有的朋友可能会说,c语言还支持别的类型吧,不仅仅这几种类型吧。咱们继续往下看,像short和long这两个是啥呢?是类型吗?在c语言可不是呢,这两个仅仅是对类型说明符进行限定的特殊字符(虽然long int可以简写成long)!既然这两个是限定字符,不仅可以用来修饰int,像short int和long int;而且long还可以用来修饰double,如long double。
为什么需要short和long这两个限定符呢?就是为了满足尽可能多样的对整数地盘空间的要求。
这里就要说明下了,那我怎么能记住int占多少字节呢?是4个还是多少个?这时候要用类似sizeof(int)、sizeof(long int)之类的方法,因为c语言在不同的机器上同一种类型占据的字节可能不一样呢,而sizeof()这个函数就是为了在各平台上进行兼容而提供的库函数。int通常是反映特定机器的自然大小,一般为16位或32位,short一般为16位,long一般为32位。各个编译程序可以根据各自硬件选择适当大小,唯一限制:short与int对象至少有16位,而long对象至少32位;short对象不得长于int对象,而int对象则不长于long对象。
除了short和long两种限定符,还有没有别的限定符呢?当然有,就是 signed和unsigned两个。这两个主要是用来限定char和int类型的,当然这两个限定符也可以和short和double一块组合使用呢!毕竟都是特殊的限定符而已呢。signed是告诉编译器最高位当符号位,而unsigned是告诉编译器最高位不是符号位,而是数据位!
基本数据类型就简单写这些。