05-数据_数据类型关键字
3.3 数据:数据类型关键字
不仅变量和常量不同,不同的数据类型之间也有差异。一些数据类型表示数字,一些数据类型表示字母(更普遍地说是字符)。C通过识别一些基本的数据类型来区分和使用这些不同的数据类型。如果数据是常量,编译器一般通过用户书写的形式来识别类型(如,42是整数,42.100是浮点数)。但是,对变量而言,要在声明时指定其类型。稍后会详细介绍如何声明变量。现在,我们先来了解一下C语言的基本类型关键字。K&R C给出了7个与类型相关的关键字。C90标准添加了2个关键字,C99标准又添加了3个关键字(见表3.1)。
| 最初 K&R 给出的关键字 | C90 标准添加的关键字 | C99 标准添加的关键字 |
| :----- | :----- | :----- | :----- | :----- |
| int | signed | _Bool |
| long | void | _Complex |
| short | | _Imaginary |
| unsigned |
| char |
| float |
| double |
在C语言中,用 int 关键字来表示基本的整数类型。后 3 个关键字( long 、 short 和 unsigned )和 C90 新增的 signed 用于提供基本整数类型的变式,例如 unsigned short int 和 long long int 。 char 关键字用于指定字母和其他字符(如, # 、 $ 、 % 和 * )。另外, char 类型也可以表示较小的整数。 float 、 double 和 long double 表示带小数点的数。 _Bool 类型表示布尔值( true 或 false ), _Complex 和 _Imaginary 分别表示复数和虚数。
通过这些关键字创建的类型,按计算机的存储方式可分为两大基本类型:整数类型和浮点数类型。
位、字节和字
位、字节和字是描述计算机数据单元或存储单元的术语。这里主要指存储单元。
最小的存储单元是位(bit),可以存储0或1(或者说,位用于设置“开”或“关”)。虽然1位存储的信息有限,但是计算机中位的数量十分庞大。位是计算机内存的基本构建块。
字节(byte)是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。这是字节的标准定义,至少在衡量存储单位时是这样(但是,C语言对此有不同的定义,请参阅本章3.4.3节)。既然1位可以表示0或1,那么8位字节就有256(2的8次方)种可能的0、1的组合。通过二进制编码(仅用0和1便可表示数字),便可表示0~255的整数或一组字符(第15章将详细讨论二进制编码,如果感兴趣可以现在浏览一下该章的内容)。
字(word)是设计计算机时给定的自然存储单位。对于8位的微型计算机(如,最初的苹果机),1个字长只有8位。从那以后,个人计算机字长增至16位、32位,直到目前的64位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。