
3.5 变量
我们在前面的实例中已经接触过变量了。变量是指在程序运行期间值可以变化的量。在定义变量时,系统会根据数据的需求(数据类型)为该变量申请一块合适的内存空间。如果将内存空间比喻成一个宾馆,那么房间号就相当于变量名,房间类型就相当于变量类型,入住的客人就相当于变量值,如图3.8所示。

图3.8 宾馆与内存空间的对应图
C语言中的变量类型有整型变量、实型变量和字符型变量,接下来分别介绍这几种变量类型。
3.5.1 整型变量

整型变量是指用于存储整型数据的变量。整型变量的数据类型有6种,如表3.5所示。
表3.5 整型变量的数据类型

续表

学习笔记
在表3.5中,用中括号[]括起来的部分为可选部分,如[signed] int表示在编写时可以省略signed关键字。
整型变量的数据类型及其详细信息如表3.6所示。
表3.6 整型变量的数据类型及其详细信息

学习笔记
通常说的整型是指有符号基本整型[signed] int。
默认整数类型是int,在给long型变量赋值时,如果没在整型常量后添加L或l,则会按照默认的int类型进行赋值:

正确的写法如下:

学习笔记
在编写程序时,在给变量赋值前必须先定义所有变量,否则会发生错误。通过下面两段代码进行对比。

3.5.2 实型变量

实型变量又称为浮点型变量,是指用于存储实型数据的变量。实型数据分为两部分,分别为整数部分和小数部分。C语言中的实型变量的数据类型根据实型的精度还可以分为单精度类型、双精度类型和长双精度类型,如表3.7所示。
表3.7 实型变量的数据类型

1.单精度类型
单精度类型的关键字是float,它在内存空间中占4字节,取值范围是-3.4×1038~3.4×1038。定义一个单精度类型变量的方法是在变量前使用关键字float。例如,定义一个单精度类型变量fFloatStyle,并且将其赋值为3.14,方法如下:

学习笔记
在给单精度类型变量赋值时,需要在数值后面添加F或f,表示该数值的数据类型是单精度类型,否则默认为双精度类型。
2.双精度类型
双精度类型的关键字是double,它在内存空间中占8字节,取值范围是-1.7×10308~1.7×10308。定义一个双精度类型变量的方法是在变量前使用关键字double。例如,定义一个双精度类型变量dDoubleStyle,并且将其赋值为5.321,方法如下:

3.5.3 字符型变量

字符型变量是指用于存储字符的变量。将一个字符存储于一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储于内存空间中。
字符型变量在内存空间中占1字节,取值范围是-128~127。定义一个字符型变量的方法是在变量前使用关键字char。例如,定义一个字符型变量cChar,并且将其赋值为'a',方法如下:

学习笔记
字符数据在内存空间中存储的是字符的ASCII码值,即一个无符号整数,其存储形式与整型数据的存储形式一样,因此C语言允许字符型数据与整型数据通用。例如:

在上面的代码中,首先定义两个字符型变量,将一个变量赋值为'a',将另一个变量赋值为97,最后的输出结果都是“a”。
3.5.4 变量总结
前面讲解了整型变量、实型变量和字符型变量的相关知识,本节对这3种类型变量的相关知识进行总结,如表3.8所示。
表3.8 整型变量、实型变量和字符型变量的相关知识总结

学习笔记
输入、输出的数据类型要与所用的格式字符一致。例如:
