基本数据类型、算符表达式

  • 格式:doc
  • 大小:225.00 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基本数据类型、算符表达式

————————————————————————————————作者:————————————————————————————————日期:

第二章 C 语言的基本数据类型、运算符和表达式

2.1 数据类型的概念

数据类型是指数据的内在表现形式。通俗地说,我们把数据在加工计算中的特征称为数据的类型。数据类型包含两方面的含义:一是该类型数据可以取值的范围;二是在该范围内的数据可以进行的操作。例如,两个人的年龄可以进行加法、减法运算;两个人的工资也可以进行加法、减法运算。年龄和工资都具有一般数值的特点,在C 语言中称为数值型,其中年龄是整数,所以称为整型;工资一般为实数,所称为实型。又如两个人的姓名是不能进行加法、减法运算的,这种数据具有文字的特征,在C 语言中称为字符串。单个字符称为字符型数据。

在C 语言中我们把整型和实型全称为“数值型”,把数值型和字符合称为“基本数据类型”。此外,C 语言根据数据加工处理的特征,还设有其它复杂的数据类型,具体如图2.1.1所示。

整型

实型

字符型

图2.1.1 C 语言的数据类型

其中“构造类型”是指由若干个相关的基本数据类型组合在一起形成的一种复杂的数据类型。例如,若干个人的年龄组合在一起,就是一个数组,若干个人的基本工资、职务工资、奖金组合在一起,也是一个数组。前者是由整型数据组成的一维数组,后者是由实型数据组成的二维数组。又如,一个人的姓名、年龄、基本工资也可以组合在一起,它们的数据类型不同,在C 语言中称为“结构体类型”。如果有若干个数据不同时使用,我们也可以让它们占用相同的内存区域,以便节省内存,这些数据组合在一起就是“联合体类型”,联合体类型中的数据可以是同类型的,也可以是不同类型的。

指针型是一种简单的数据类型,它是用来表示内存地址的。指针类型的数据可以表示基本类型数据的地址,也可以表示结构类型数据的首地址和其中某个具体数据的地址,还可以

单精

短整

枚举数组型 结构体

无符号基本

数据空类

指针构造

表示某指针的地址(称为指针的指针)。例如存放一个人年龄的内存的地址,存放某数组的首地址,存放某结构数据的首地址都可以用指针型数据来存放。设立指针型数据是为了方便C语言的动态处理。

如果某数据在程序运行中,只有固定的几个值,我们就可以把这几个值列出来,以后这个数据只能取确定的几个值中的某一个。这种数据在C语言中就叫做“枚举型”。

空类型是从语法完整性的角度给出的一个数据类型,表示该处不需要具体的数据值,因而没有数据类型。

每个数据都要在内存中(个别数据可能在寄存器中)分配若干个字节,用于存放该数据。不同类型的数据在内存中占用的字节数是不同的,因此C语言要求每使用一个数据之前,必须对数据的类型加以说明(常量不必事先说明),以便为其安排合适的内存。

C语言的基本数据类型有整型、实型和字符型,各类型的分类及表示方法见表2.1.1。

表2.1.1 C语言基本数据类型分类

类型表示方法占位值域

整型基本整型int 16 -215~(215-1) 短整型short 16 -215~(215-1) 长整型long 32 -231~(231-1) 无符号整型unsigned 16 0~(216-1) 无符号短整型unsigned short 16 0~(216-1) 无符号长整型unsigned long 32 0~(232-1)

实型单精度实型float 32 3.4E-38~3.4E+38

双精度实型double 64 1.7E-308~1.7E+308 长双精度实型long double 80 3.4E-4932~1.7E+4932

字符型基本字符型char void 8 -128~127 无符号字符型unsigned char 8 0~255

本章主要介绍基本数据类型的数据特征、说明方法和使用,其它数据类型将在后续章节中逐步介绍。

2.2 常量、变量与标识符

2.2.1 常量和符号常量

在程序运行过程中,其值不能被改变的量称为常量。常量区分为不同的类型,如12、0、-3为整型常量,4.6、-1.23为实型常量,'a'、'd'等为字符常量。常量一般从其字面形式即可判别。也可以用一个标识符代表一个常量,如:

[例2.2.1]

#define PRICE 30

main ( )

{

int num, total;

num=10;

total=num*PRICE;

printf(″total=%d″,total);

}

程序中用#define命令行定义PRICE代表常量30,此后凡在此文件中出现的PRICE都代表30,可以和常量一样进行运算,程序运行结果为

total=300

有关#define命令行的详细用法参见后续章节。

这种用一个标识符代表一个常量的,称为符号常量,即标识符形式的常量。注意符号常量不同于变量,它的值在其作用域(在本例中为主函数)内不能改变,也不能再被赋值。如再用以下赋值语句给PRICE赋值:

PRICE=40;

是错误的。

习惯上,符号常量多用大写,变量用小写,以示区别。

2.2.2 变量

其值可以改变的量称为变量。一个变量应该有一个名字,在内存中占据一定的存储单元。在该存储单元中存放变量的值。请注意区分变量名和变量值这两个不同的概念。

和其它高级语言一样,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符(identifier)。简单地说,标识符就是一个名字。

C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。如下面是合法的标识符,也是合法的变量名。

Sum, average, class, day, month, student, _name, lotus1_2_3, basic.

下面是不合法的标识符和变量名:

M.D.John, $123, x/y, #33, 3D64, a>b

注意,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。习惯上,变量名用小写字母表示,以增加可读性。

C语言中标识符的长度(字符个数)无统一规定,随系统而不同。许多系统(如IBM PC 的MS C)取前8个字符,假如程序中出现的变量名长度大于8个字符,则只有前面8个字符有效,后面的不被识别。例如,有两上变量:student_name和student_number,由于二者的前8个字符相同,系统认为这两个变量是一回事而不加区别。可以将它们改为:stud_name 和stud_num,以使之区别。因此,在写程序时应注意了解所用系统对标识符长度的规定,以免出现上面的混淆。

这种错误并不反映在编译过程中(即语法无错误),但运行结果显然不对。

在选择变量名和其它标识符时,应注意做到“见名知意”,即选有含意的英文单词(或其缩写)作标识符,如count, name, day, month, class, city, country等,除了数值计算程序外,一般不要用代数符号(如a、b、c、x1、y1等)作变量名,以增加程序的可读性。这是结构化程序的一个特征。本书在一些简单的举例中,为简单起见,仍用单字符的变量名(如a、b、c等),请读者注意不要在其它所有程序中都如此。

在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”,如例1.2.2、例1.2.3那样。这样做的目的是:

1.凡未被事先定义的,不作为变量名,这就能保证程序中变量名使用的正确。例如,如果在定义部分写了

int student;