第5章 数据类型和表达式 下载本文

内容发布更新时间 : 2024/10/23 16:24:56星期一 下面是文章的全部内容请认真阅读。

第五章

数据类型和表达式

通过前面的学习,我们已经了解了C语言的基本内容,并且使用了一些数据类型编写一些简单的程序,实现对数据的处理。在用C语言编写程序时需要考虑:计算机能处理哪些数据?对这些数据能做哪些操作?通过怎样的操作步骤才能完成给定的工作?这3个问题分别对应数据表达、运算和流程控制。下面我们讨论前两个问题。

首先介绍C语言中可以使用的数据类型: 整型

基本数据类型 字符型 单精度 实型(浮点型) 双精度 数组 结构

数据类型 构造数据类型 联合 枚举

指针类型 空类型

C语言程序中所使用的每个数据都属于上述某一种类型,在编程时要正确定义和使用数据。其次,在C语言中,对数据的操作就是对数据进行运算,C语言提供了许多运算符,可以对不同类型的数据进行处理。这些运算符与数据组合后便形成了表达式。

5、1 基本数据类型

C语言的4种基本类型是:整型、字符型、单精度浮点型和双精度浮点型,见表5.1 表5. 1 基本数据类型

类 别 名 称 类型名 数据长度 取值范围 [有符号]整型 int 32位 略 [有符号]短整型 short [int] 16位 … [有符号]长整型 long[ int ] 32位 … 整 型 无符号整型 unsigned[int] 32位 …

无符号短整型 unsigned short[int] 16位 … 无符号长整型 unsigned long[int] 32位 … 字符型 字符型 char 8位 … 实 型 单精度浮点型 float 32位 … ( 浮点型 ) 双精度浮点型 double 64位 …

注 :方括号中的内容可以省略

1

1、整型

整型是指不存在小数部分的数据类型。见上表5.1的整型部分。

无符号的整型数据指不带符号的整型,即零或正整数,不包括负数。 2、字符型

每个字符型数据在内存中占用一个字节,用于存储它的ASCII码。所以C语言中的字符具有数值特征,不但可以写成字符常量的形式,还可以用相应的ASCII码表示,即可以用整数来表示字符。

例如:设 ch 是字符型变量,字符型常量 ‘ A ‘ 的ASCII码值是65,则ch = ‘ A ’和ch = 65等价。

既然字符变量的值可以是字符或整数,它就可以被定义成整型变量;同时整型变量的值也可以是字符型数据,它可以被定义成字符型变量。即整型变量和字符型变量的定义和值都可以互相交换。

互换整型变量和字符型变量的定义和值时,整型数据的取值范围是有效的ASCII码。 3、实型

实数类型又称为浮点型,指有小数部分的数。见上表5.1的实型部分。

单精度和双精度的区别在于数据的精度和取值范围有所不同。双精度(double)比单精度(float)的精度高,取值范围大。实型常量的类型都是双精度浮点型。

实数在计算机中只能近似表示,运算中也会产生误差。 4、数据存储

计算机处理的所有信息都以二进制形式表示(数值只能用0、1,以原码、反码、补码等方式表示)。表5.1中的数据长度32位是说32位二进制数(关于数在计算机里的表示,请参

照教材有关章节和有关书籍)。8位二进制数是一个字节,故32位二进制数是4个字节,

16位二进制是两个字节,64位二进制是8个字节。位数越多所表示的数字越大,数值越精确。

5.2 常量和变量

C语言中,数据有常量和变量之分。在程序运行过程中,其值不能改变的量称为常量;其值可以改变的量称为变量。 5.2.1 常量

常量的类型由书写格式决定。例如:-10、123L(长整型)、017(八进制)、0x1f(十六进制)是整型常量,-123.23、4.3e-3是实型常量,而’a’、’\\n’、‘9’是字符型常量。 1、符号常量:可以用一个标识符来表示一个常量,称为符号常量。 例5.1 输入球的半径,计算球的表面积和体积 #include

#define PI 3.14 //定义符号常量 PI int main()

{ double r,s,v;

printf(\//输入提示 scanf(\

s = 4.0*PI*r*r; //计算球的表面积

2

v = 4.0/3.0*PI*r*r*r; //计算球的体积 printf(\

return 0; }

运行结果:input r: 1.0

s = 12.56000, v = 4.186667

用 #define 命令定义符号常量PI,它代表3.14。定义后,凡在该程序中出现PI的地方,PI都代表3.14,这样符号常量PI就可以和实型常量3.14一样进行运算。

#define 命令的末尾不加分号。

定义符号常量后,就可以引用它,但不能改变它的值。

使用符号常量有助于提高程序的可读性,而且修改方便,便于移植。例如:上面的程序中多处用到PI,开始取3.14,以后为了提高计算精度,PI值取3.1415926,在这种情况下,如果直接使用常数3.14,就要对程序的多处3.14进行修改成3.1415926。而使用符号常量,只需改动一处,即改变符号常量的定义(将最上面的PI定义改成PI 3.1415926)。

符号常量名中的英文字母一般使用大写字母,如PI。 2、整型常量

只要整型常量的值不超过表6.2中列出的整型数据的取值范围,就是合法的常量。整型常量就是常说的整数。 (1)整数的表示

C语言中的整数有十进制、八进制和十六进制3种表现形式。 a、 十进制整数由正、负号和阿拉伯数字0~9组成,但首位数字不能是0。 b、 八进制整数由正、负号和阿拉泊数字0~7组成,但首位数字必须是0。

c、十六进制整数由正、负号和阿拉伯数字0~9、英文字符a~f或A~F组成,首位数 字前必须有前缀0x或0X。

例如,10,010,0x10分别为十进制、八进制、十六进制整数,它们表示着不同数值的整数。10是十进制数值,010的十进制数值是8,0x10的十进制数值是16。

又如,16,020,0X10分别为十进制、八进制和十六进制整数,它们表示着同一个数值的整数,即十进制数值16。

0386和0x1g是非法的整型常量,因为0386作为八进制整数含有非法数字8,而0x1g作为十六进制整数含有非法字符g。

任何一个整数都可以用3种形式来表示,这并不影响它的数值。例如,表示十进制数值是10的整数,可以采用10、012或0Xa,所谓十进制、八进制和十六进制只是整数数值的3种表现形式而已。

练 习:

将下面各数用八进制和十六进制数表示 1、(10)10 =( )8=( )16

十进制化八进制: 8 10 2 = 12 八进制化十进制:12=1 * 81 + 2 * 80 = 10 1

3