在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。位是计算机内存的基本构建块。
字节(byte)是常用的计算机存储单位。对于几乎所有的机器,1字节均为8位。这是字节的标准定义,至少在衡量存储单位时是这样。既然 1 位可以表示 0 或 1,那么 8 位字节就有 256(2 的 8 次方)种可能的 0、1 的组合。通过二进制编码(仅用 0 和 1 便可表示数字),便可表示 0~255 的整数或一组字符。
字(word)是设计计算机时给定的自然存储单位。
一、整数
在 C语言中,整数是没有小数部分的数。
例如,9、 −73 和 3846 都是整数。而 3.14 、 0.44 和 7 .000 都不是整数。计算机以二进制数字储存整数,例如,整数 7 以二进制写是 111 。因此,要在 8 位字节中储存该数字,需要把前5 位都设置成 0 ,后 3 位设置成 1。
二、浮点数
2.75、 3.16E7 、 7.00 和 2e-8 都是浮点数。注意,在一个值后面加上一个小数点,该值就成为一个浮点值。所以,7 是整数, 7.00 是浮点数。书写浮点数有多种形式。 这里对 e 记数法作简要介绍:3.16E7 表示 3.16×107 ( 3.16 乘以 10 的 7 次方)。其中,10^7 =10000000 , 7 被称为 10 的指数。关键要理解浮点数和整数的储存方案不同。计算机把浮点数分成小数部分和指数部分来表示,而且分开储存这两部分。因此,虽然 7.00 和 7 在数值上相同,但是它们的储存方式不同。在十进制下,可以把 7.0 写成 0.7E1 。这里, 0.7 是小数部分, 1 是指数部分。当然,计算机在内部使用二进制和 2 的幂进行储存,而不是 10 的幂。
整数没有小数部分,浮点数有小数部分。浮点数可以表示的范围比整数大。
对于一些算术运算(如,两个很大的数相减),浮点数损失的精度更多。
以浮点格式(十进制)储存π的值:
后面将会对精度的相关内容做进一步的介绍。