
第3章 基本数据类型、运算符和表达式
3.1 知识介绍
1.C语言的数据类型
C语言中基本的数据类型有3种,即整型(int)、实型(单精度浮点型float和双精度浮点型double)和字符型(char)。
(1)整型(int)可以用十进制、八进制和十六进制3种形式来表示,如59、+23和-97是合法的十进制整数;024是合法的八进制整数,078是一非法的八进制整数;0x1f是合法的十六进制整数。
(2)实型:分为单精度浮点型float和双精度浮点型double,实型数据只能采用十进制,有十进制小数形式和指数形式两种表达形式。例如,0.89、12.、-2.5f、lE3、-2和5E-6都是合法的实数。
(3)字符型:用于存储字符,字符型数据有两种形式,一是用一对单引号括起的单个(不能是多个)字符;另一种是转义字符,即以反斜杠“\”开头的特殊字符。例如,'a'、'0'、'\t'和'\n'都是合法字符。
2.标识符与关键字
(1)标识符:一个名称,用来表示变量、常量、函数、类型,以及文件等的名字。标识符只能由字母、数字或下画线组成,并且第1个字符不能是数字。命名标识符时最好能做到“见名知意”,如_12、max和min_a_9是合法的标识符,而n-12和2a是不合法的标识符。
(2)关键字:C语言保留、具有特定含义且不能用做其他用途的一批标识符,如int、float、double和char等。
3.常量与符号常量
常量是指在程序运行过程中其值不能改变的量,又分为直接常量和符号常量。
(1)直接常量:可分为整型常量、实型常量、字符常量和字符串常量,如20、1.2f、3.4、'a'和"ecjtu"都是合法的直接常量。
(2)符号常量:可以用一个标识符来表示的一个常量,它是一种特殊的常量,在使用之前必须先定义,其定义格式如下:

例如:

4.变量
变量指在程序的运行过程中其值可以改变的量,它实质上代表计算机中的一个存储单元,用来存放数据。
(1)变量的定义:C语言规定变量必须先定义,后使用,定义格式如下:

例如:

(2)变量的初始化。
在定义变量时可根据需要赋予它一个初始值,即变量的初始化,一般格式如下:

例如:

5.运算符
运算符是表示某种操作的符号,操作的对象为操作数。根据运算符所操作的操作数个数,可把运算符分为单目运算符、双目运算符和三目运算符。
C语言运算符分为以下类型。
(1)算术运算符:+、-、*、/、%。
(2)关系运算符:>、<、==、>=、<=、!=。
(3)逻辑运算符:!、&&、||。
(4)位运算符:<<、>>、~、|、^、&。
(5)赋值运算符:=、+=、-=、*=、/=、%=。
(6)条件运算符:?:。
(7)逗号运算符:,。
(8)指针运算符:*、&。
(9)求字节运算符:sizeof。
(10)分量运算符:.、->。
(11)下标运算符:[]。
(12)强制类型转换运算符:(类型名)(表达式)。
(13)其他:如函数调用运算符()。
6.表达式
用运算符把操作数按照C语言的语法规则连接起来的式子即表达式。
7.运算符的优先级及结合性
(1)运算符的结合性:C语言中各运算符的结合性分为左结合性(自左至右)和右结合性(自右至左),多数运算符具有左结合性;单目运算符、三目运算符、赋值运算符具有右结合性。
(2)运算符的优先级:在表达式中优先级较高的先于优先级较低的运算。一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。一般而言,单目运算符优先级较高,赋值运算符优先级低,逗号运算符优先级最低;算术运算符优先级较高;关系和逻辑运算符优先级较低。
C语言中常用运算符的优先级和结合性如表3-1所示。
表3-1 运算符的优先级和结合性

8.表达式的书写规则
(1)所有括号全部使用圆括号,没有小括号、中括号,以及大括号之分。
(2)表达式中的乘号不能省略。
(3)表达式中各操作数和运算符应在同一水平线上,没有上下标和高低之分。
例如:正确的C语言表达式为(-b+sqrt(b*b-4*a*c))/(2*a)。
9.数据类型的转换
C语言的数据类型转换可以归纳为如下3种方式。
(1)数据类型自动转换。
数据类型的自动转换规则如图3-1所示。

图3-1 数据类型自动转换规则
例如,'a'+2+3.0的计算结果为102.0,数据类型是double类型。
(2)赋值转换:把赋值运算符右侧表达式的类型转换为左侧变量的类型。
例如,语句char ch=97;将字符'a'赋给变量ch。
(3)强制类型转换。
一般格式为:

功能:把表达式的运算结果强制转换成类型说明符所表示的类型。
例如:
