基本数据类型与基本运算
基本数据类型及运算
整型常量 十进制整数:由数字0~9和正负号表示 八进制整数:由数字0开头,后跟数字0~7表示 十六进制整数:由0x开头,后跟0~9,a~f,A~F表示 实型常量 十进制数形式:(必须有小数点) 如0.123, .123, 123.0, 0.0, 123. 指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 默认double型,在实型常量后加字母f或F为float 型 字符常量:用单引号括起来的单个普通字符或转义字符 字符串常量:用双引号(“”)括起来的字符序列,每个字符串 尾自动加一个 ‘\0’ 作为字符串结束标志
-128~127
无
unsigned char
8
0~255
需要注意的是,标准C没有具体规定以上各整型数据所占内存字节数。只要求long型数据长度不短于int型,short型不长于int型。具体如何实现,由各计算机系统和编译系统决定。
如:在Visual C++ 6.0中,一个short型数据占用2个字节的内存空间,一个int型数据和一个long型数据分别占用4个字节的内存空间。
混合运算隐式转换规则
int char,short 说明: 必定的转换 运算对象类型 不同时转换
低
unsigned
float
long
显式转换举例
例 (int)(x+y) (int) main() { float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); } 结果:x=3.600000,i=3
决定分配字节数 和数的表示范围
合法标识符
变量的使用:先定义,后使用
基本数据类型及基本操作
概述了算机程序中最常见的数据类型。
讲述了最基本的运算和操作。
3 类型转换
4 输入输出
介绍了如何将不同类型的数据转换为其他 数据类型。
演示了如何将数据输入到程序中和从程序 中输出数据。
实际应用
计算器程序
使用基本操作让计算器程序 能够对数字进行简单运算。
文本编辑器
使用字符串类型存储文本, 并实现基本操作,例如复制、 粘贴、查找和替换。
嵌入式系统
通过了解数据类型和基本操 作,可以编写嵌入式系统软 件来控制硬件设备。
学习建议
阅读文档
学习计算机语言,重要的是掌 握文档。
多练习
通过大量练习,巩固所学知识 和技能。
找到导师
与经验丰富的导师交流,以获 得反馈和指导。
现实应用
除了编写代码,计算机程序员还可以应用他们的技能来解决该领域的一系列问题。例如:
和>>)。
7
输入输出
8
用于将数据输入到程序中或将数据从 程序中输出。
赋值
将一个变量的值赋给另一个变量,或 者将一个值赋给变量。
自增和自减
将一个变量增加或减少1。
逻辑运算
用于将多个条件连接在一起,返回 true或false。
类型转换
将一个数据类型转换为另一个数据类 型。
总结与复习
1 数据类型
2 基本操作
网络安全
编写安全软件,确保机密信息不会被黑客入 侵。
人工智能
开发算法,使计算机能够自动学习。
游戏开发
创建动人心魄的电子游戏,实现真实的特效 和图形。
网络开发
帮助企业和机构创建网站和网络应用程序。
基本数据类型及基本操作
本演示旨在介绍计算机编程中最基本的数据类型和操作,为新手入门提供指 导。
第二讲.+基本数据类型及运算
第二章 基本数据类型及运算
1. 计算机结构 2. 计算机的数据运算 3. 计算机中数据存储方式 4. 程序设计中的基本数据类型 5. 程序设计数据输入及输出方法 6. 程序设计中的基本数据类型的运算
计算机存储的层次
• 计算机存储的层次
处理器 控制器 二级缓存 (SRAM) 主存 (DRAM) 外部 存储器 (磁盘)
二进制的加法表
• 二进制加法 A B 0 0 0 1 1 0 1 1 SUM 0 1 1 0
• 逻辑运算:与、或、非预算
SUM = + AB = ⊕ B AB A
计算机的数据运算
• 考虑进位的1位加法器
SUM
A 0 0 0 0 1 1 1 1
B 0 0 1 1 0 0 1 1
C 0 1 0 1 0 1 0 1
浮点型数据
• 科学计数法:
– 0.0000000714566778=7.14566778e-8
• 采用浮点方法移动小数点位置,可以用有限位数存储最高 精度的数据 • IEEE754的单精度和双精度浮点数格式,基为2
符号位 指数部分 尾数部分(无符号数)
– 尾数部分表示小数点后的数字,小数点前固定为1 – 单精度浮点数(float):符号位1位,指数位8位,尾数23位 – 双精度浮点数(double):符号位1位,指数位11位,尾数52位
单字符输入
C程序设计中的变量
• C程序中的变量表示程序中需要存储的数据对象,对应内 存中的存储空间 • 变量用变量名来标识
– 变量名以下划线或字母开头,后接0个或任意多个字母、数字和下 划线,C程序中的关键字不能用来命名变量(关键字见教材14页)
• 有效变量名:a, _b, c1_2 • 无效变量名:2a, &c, $d1
基本数据类型与基本运算
常量说明语句的格式: const <类型名><常量名><表达式> 例2:const int N=2000; const float pai=3.1416;
必须以关键字const开头;
6.1基本类型及 其派生类型 6.2 说明语句 6.3 基本运算符
类型名:限定为基本类型(int,float, char, bool)及其简单派生类型。
enum类型的五点说明(P57)
(1)一个enum类型实际上是int型的子 6.1基本类型及 集,每个枚举值对应一个整数。 其派生类型 (2)设枚举值表含n个枚举值,若全未 6.2 说明语句 赋值时,则自左至右分别对应整数0~ 6.3 基本运算符 (n-1)。 (3)若第i个枚举值被赋与整型常量 m,则其右侧未被赋值的枚举值分别 对应m+1,m+2,…,直到下个被赋值
(2)表达式语句:也被称为处理语句。 它是程序中要求计算机对数据进行处 理和操作的语句。 C++语言的表达式概念与数据 表达式的概念基本一致,但范围有所 扩大。如“输入输出语句”、“赋值 语句”也都被看成是表达式语句。 (3) 控制语句:用来控制语句执行次 序的语句,即是决定下步执行语句的 调度者。
6.1.3 派生类型
6.1基本类型及 其派生类型 6.2 说明语句 6.3 基本运算符
基本类型经过简单的字长和范 围放大或者缩小,就形成了基本类 型的简单派生类型。
派生类型说明符由int、float、 double和char前加上类型修饰符组 成。 short;long;signed;unsigned; (P56.表3.2)
第六讲 基本数据类型与基本运算
6.1 基本类型及其派
生类型
基本数据类型及运算
18~19
C语言程序设计 基本数据类型及运算
2.1.1 基本数据类型(三) 基本数据类型(
3. 字符型数据 字符型数据分为一般字符型(char)、带符号字符型(signed char) 和无符号字符型(unsigned char)三种类型。具体情况见下表所示 :
数据类型名
说明
字节
取值范围
char signed char unsigned char
C语言程序设计 基本数据类型及运算
基本数据类型及运算
本章导读
本章通过C程序实例分析着手,使读者理解C语言的基 本数据类型的表示形式、存储格式及相关的运算,掌 握变量定义的方法及意义,能够灵活运用各种表达式, 为C语言编程打下基础。
本章主要知识点
(1)基本的数据类型。 (2)常量和变量。 (3) C语言各种运算符和表达式的应用。
C语言程序设计 基本数据类型及运算
2.1.1 基本数据类型(二) 基本数据类型(
2. 实型数据 实型数据分为单精度实型(float)、双精度实型(double)和长 双精度实型(long double)。具体情况见下表所示 :
Visual C++ 6.0环境 数据 类型名 说明 字节 数值范围 有效数字 字 节 数值范围 有效数字 Turbo C2.0环境
C语言程序设计 基本数据类型及运算
[例]程序结果及分析
结果分析:变量可以被定义成不同的数据类型并赋值,不同类型的数据在内存中所占 的字节数不同,通过sizeof()求得数据宽度。短整型、整型、字符型、单精度实型、 双精度实型在内存中分别占2字节、4字节、1字节、4字节和8字节。同时,这些数据 在输出时所使用的输出格式控制符也不相同,分别为%d、%d、%c、%f和%lf形式。由 此可见,数据表现为常量或变量,数据又具有不同的数据类型,不同数据类型的数据 存储格式不同,数据的输出格式控制也不相同。注意:在Trubo C环境下,整型数据 存储时在内存中占2字节。
基本数据类型及其运算
目录
• 基本数据类型介绍 • 数据类型的运算 • 数据类型的转换 • 数据类型的输入输出 • 数据类型的应用场景
01 基本数据类型介绍
整型
定义
整型数据表示整数,包括正整数、负整数和零。
分类
根据取值范围,整型数据可以分为短整型 (short)、整型(int)和长整型(long)。
分类
字符型数据可以分为ASCII码字符和Unicode字 符。
3
用途
字符型数据常用于表示姓名、字母、符号等。
布尔型
定义
布尔型数据只有两个值,true(真) 和false(假)。
用途
布尔型数据常用于表示条件判断、逻 辑运算等。
02 数据类型的运算
算术运算
减法
用于计算两个数的 差。
除法
用于计算两个数的 商。
THANKS FOR WATCHING
感谢您的观看
fprintf()
将格式化的数据输出到指定的文件流中。
puts()
将一个字符串输出到标准输出,并在结尾自动添 加一个换行符。
05 数据类型的应用场景
整型在数学计算中的应用
01
整型数据类型用于表示整数,如正整数、负整数和零。
02
在数学计算中,整型常用于计数、排序、数学运算等场景。
03
例如,在编程中计算数组元素个数、计算总和等。
显式转换
强制类型转换
程序员可以使用强制类型转换运算符将一种 数据类型显式地转换为另一种数据类型。例 如,可以使用强制类型转换运算符将一个 double类型变量转换为int类型变量。
类型转换函数
某些数据类型提供了专门的类型转换 函数,可以将一种数据类型转换为另 一种数据类型。例如,C语言中的atoi 函数可以将字符串转换为int类型。
数据类型与基本运算
度浮点数。
运算
03
浮点型数据支持基本的算术运算(加、减、乘、除)和比较运
算(大于、小于、等于等),但需要注意精度问题。
复数类型
定义
复数类型是一种包含实部和虚部的数值型数据,用于表bj”的形式表示,其中a是实部,b是虚部 ,j是虚数单位。
运算
复数支持基本的算术运算(加、减、乘、除)和比较运算(等 于、不等于),同时还有一些特殊的运算,如共轭、模和辐角 等。
乘等赋值
将右侧的值与左侧变量的值相乘,并 将结果赋给左侧变量,例如 `a *= b`。
除等赋值
将右侧的值与左侧变量的值相除,并 将结果赋给左侧变量,例如 `a /= b`。
取余等赋值
将右侧的值与左侧变量的值取余,并 将结果赋给左侧变量,例如 `a %= b`。
比较运算
等于
判断两个值是否相等,例 如 `a == b`。
大于
判断第一个值是否大于第 二个值,例如 `a > b`。
大于等于
判断第一个值是否大于或 等于第二个值,例如 `a >= b`。
01
02
03
04
05
06
不等于
判断两个值是否不相等, 例如 `a != b`。
小于
判断第一个值是否小于第 二个值,例如 `a < b`。
小于等于
判断第一个值是否小于或 等于第二个值,例如 `a <= b`。
规则
隐式类型转换通常发生在不同数据类型之间的运算,如整型与浮点型、字符型 与整型等。转换规则遵循数据类型的层次结构,从低层次向高层次转换。
显式类型转换
强制转换
程序员通过使用类型转换运算符,明 确指定将一种数据类型转换为另一种 数据类型。
基本数据结构及其运算
基本数据结构及其运算1.数组:数组是一种线性数据结构,可以存储相同类型的一组元素。
数组的特点是连续存储,可以通过索引快速访问元素。
数组的常用运算包括访问指定索引的元素、插入和删除元素等。
2.链表:链表也是一种线性数据结构,但不同于数组的连续存储,链表是由一系列节点组成的,每个节点包含元素和指向下一个节点的指针。
链表的常用运算包括在指定位置插入和删除节点、遍历链表等。
3. 栈:栈是一种后进先出(LIFO)的数据结构,用于存储和管理函数调用、表达式求值等需要按照特定顺序操作的场景。
栈的基本运算包括入栈(push)和出栈(pop)。
4. 队列:队列是一种先进先出(FIFO)的数据结构,用于存储和管理需要按照特定顺序处理的元素。
队列的基本运算包括入队列(enqueue)和出队列(dequeue)。
5.树:树是一种非线性数据结构,由一组节点和边组成,用于表示层次关系。
树的根节点是唯一的,每个非叶子节点可以有多个子节点。
树的常用运算包括遍历树(前序、中序、后序遍历)、特定节点等。
除了上述基本的数据结构,还有其它常见的数据结构如哈希表、图等。
不同的数据结构适用于不同的应用场景,具有不同的性能特点和运算复杂度。
在进行数据结构的运算时,可以使用不同的算法和技术来提高效率,常见的包括递归、迭代、排序算法、算法等。
此外,还可以使用一些高级数据结构如红黑树、堆等来优化特定的问题。
总结起来,数据结构是计算机科学中非常重要的基础概念,它提供了存储和组织数据的方法。
不同的数据结构适用于不同的应用场景,通过不同的算法和技术可以提高数据结构的运算效率。
基本数据类型与运算
习题:第二章 4~8,10,12,14,18,26
课件下载网站: ftp://10.10.154.27 ftp://202.192.145.9/pub 第02章 基本数据类型和运算
C
语 变量
言 ❖概念:其值可以改变的量
设
计
基本类型
单精度型float
实型
双精度型double
字符类型char
C
数 据
构造类型
数组 结构体struct 共用体union
数据类型决定:
1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作
第 二 章
类 型
指针类型
枚举类型enum
数
空类型void
据
描 <>
述
定义类型typedef
C
例 (1101001)2=(001,101,001)2=(151)8
例 (246)8=(010,100,110)2=(10100110)2
第 二 章 数 据
描 <>
述
000 ~ 0 001 ~ 1 010 ~ 2 011 ~ 3 100 ~ 4 101 ~ 5 110 ~ 6 111 ~ 7
C
语 二进制与十六进制之间的转换
int num,total;
二
字符串常量 >
num=10;
章 数
total=num*PRICE;
据
printf("total=%d",total);
描 <>
述
}
C
语
言 程
C语言-数据类型及运算
2018/7/29电子科技大Βιβλιοθήκη 计算机学院2.2.6 符号常量
将常量定义为一个标识符,称为符号常量。通常用大 写表示。 如:
#define PI
#define TRUE
3.1415926
1
#define
STAR
‗*‘
便于程序调试和修改
2018/7/29 电子科技大学计算机学院
2.3 变量
在程序执行过程中其值可以改变的量。
2018/7/29 电子科技大学计算机学院
2.4.3 关系运算与逻辑运算 关系运算符: 大于 a>b 大于等于 小于 a<b 小于等于 等于 a==b 不等于
a>=b a<=b a!=b
关系表达式的值为真用 1 或 非零数值表示, 关系表达式的值为假用零表示。 例如: 设 x=100; printf(―%d%d%d\n‖,x==100,x<100,x>=100); 输出为: 1 0 1 字符型数据按其ASCII 码值进行关系运算: ‗b‘<‗f‘ 值为 1; ‗9‘<‗3‘ 值为 0 ;‗A‘==65 值为 1
2018/7/29 电子科技大学计算机学院
5. 右移位运算 变量名>>右移位数 每右移1位相当于除以2 每右移n位相当于除以2的n次幂 6. 左移位运算 变量名<<左移位数 每左移1位相当于乘以2, 每左移n位相当于乘以2的n次幂 注意: 在移位时,变量一端被移出的位被舍弃,另 一端空出的位一般则以0填充。
float b=123.67;
&a2500H 2501H &b2502H 2503H 2504H 2505H 2506H
| |—————— |---- 1250 ----- a=1250 |—————— |-------|-------|----123.67 ------ b=123.67 |——————
数据类型及其运算
数据类型及其运算 算法和数据结合才是程序。
⽽数据⼜包括基本数据和数据结构,你会问数据结构是什么?数据结构就是数据的组织形式,例如数组,结构体。
⼀、数据类型:1.基本数据类型:整型、字符型、浮点型、枚举类型。
2.构造类型:结构体、共⽤体、数组。
3.指针类型。
4.空类型。
5.指针和结构体组成的更复杂的堆栈、表、树⼆、常量和变量:1.不变的量就是常量,分为字⾯常量和符号常量,字⾯常量如7、4.5、‘1’,符号常量就是#define替代⼀个字⾯常量,符号常量的作⽤域从定义开始。
2.变量在内存中开辟出⼀个地址,地址⾥的数据可以变化,所以说变量是变化的量。
使⽤前必须先定义,同时类型确定。
3.标识符是什么,就是命名,宏的命名,函数的命名,变量的命名,结构体类型的命名等等,规则是必须字母数字下划线,其次排⾸只能是字母或下划线,⼤⼩写有区别。
三、整型数据:1.常量表⽰⽅法:⼗进制,⼋进制0,⼗六进制0x。
2.整型变量在内存中的存放⽅式:多数占据2个字节,正的补码还是原码,负的是绝对值原码的反码+1.3.整型分类:short int,int,long int,unsigned -32768-32767/0-655354.溢出:32767+1=-327685.常量:属于哪个范围,就赋值给哪个类型变量;后缀u将数据强制为⽆符号型;后缀l将数据强制为long。
四、浮点型数据:1.分类:单精度,双精度,长双精度。
2.舍⼊误差:单精度只能保证7位有效数字,并不能说明第⼋位是不准确的。
3.默认把浮点型常量当做双精度处理。
五、字符型数据:1.字符变量:只能放⼀个字符,同时⼀个字符占据⼀个字节。
char:-128-127 unsigned char:0-255 。
2.在内存中的存储形式,ASCII码,导致可以字符数据和整型数据相通。
3."a"='a'+‘\0’,字符串常量只能放在数组⾥。
4.字符常量:字⾯字符,转义字符。
第2章基本数据类型及运算汇总
须写出正确的表达式。而一个表达式中往往包含多个运算符,
所以必须熟悉每一种运算符的性质(优先级别和结合性),才能
写出2020有/10/正6 确求解结果的表达式。
3
第二章 数据类型、 运算符与表达式
➢ 常量与变量
➢ 整型、浮点型、字符型数据
➢ 变量的初始化
➢ 各类数值型数据间的混合运算
➢ 算术运算符与算术表达式
(数字开头) (包含非法字符$) (包含空格) (系统关键字)
14
.关键字 预先定义的具有特定含义的标识符 。也 称为保留字,不能另作他用。如: int char float double unsigned struct if do while switch return goto define include undef sizeof
➢ 赋值运算符与赋值表达式
2020/10/6 ➢ 逗号运算符与逗号表达式
4
2.1 基本数据类型
2020/10/6
5
数据类型
• 数据类型:数据存在的组织和形式。
• 数据类型是数据的基本属性
• 描述的是数据的存储格式和运算规 则.
• 不同数据类型的数据,在内存中所需 的存储空间大小、存储格式均有所 不同,能支持的运算以及相应的运算 规则也会有所不同.
2020/10/6
15
变量的命名习惯
C语言中,变量(标识符)的命名习惯:
▪ 避免使用无意义的名字,应尽量做到“见名知意”; ▪ 尽量使用代表变量实际含义的英文单词或缩写作标识符名; ▪ 当名字包含多个单词时,通常使每个单词的首字母大写; ▪ 以下划线开头的名字通常是系统内部保留的标识符名; ▪ 在整个程序中保持统一的命名方式。
2020/10/6
基本数据类型与基本运算
布尔型数据类型
仅有真假两种值,可做逻辑运算。
算术运算
加法运算符
对两个数做加法运算,返回它们 的和。
减法运算符
对两个数做减法运算,返回它们 的差。
乘法运算符
对两个数做乘法运算,返回它们 的积。
除法运算符
对两个数做除法运算,返回它们 的商。
取模运算
1 什么是取模运算?
返回两个数相除的余数。 可以判断一个数是否是偶 数。
逻辑运算
逻辑与运算符
当两个表达式都为真时返回 真,否则返回假。
逻辑或运算符
当两个表达式都为假时返回 假,否则返回真。
逻辑非运算符
对表达式取反, 如!true=false。
位运算
位与运算符
对两个数执行按位与运算,返回 结果。
左移运算符
对数据进行左移位运算。如 0011(十进制 3)左移 1 位变 成 0110(十进制 6)
比较运算
1
等于运算符
检查两个数是否相等,返回布尔值。
不等于运算符
2
检查两个数是否不相等,返回布尔值。
3
大于运算符
检查前面的数是否大于后面的数,返回
小于运算符
4
布尔值
检查前面的数是否小于后面的数,返回
布尔值
5大Βιβλιοθήκη 等于运算符检查前面的数是否大于或等于后面的数,
小于等于运算符
6
返回布尔值
检查前面的数是否小于或等于后面的数, 返回布尔值
2 如何进行取模运算? 3 取模运算有什么用?
用 % 取模符号进行运算, 如 9 % 2 = 1。
可用于循环计数器和分块 运算。
自增和自减运算符
1
什么是自增和自减?
C语言程序设计基本数据类型及运算
C语言程序设计基本数据类型及运算C语言是一种通用的程序设计语言,广泛应用于嵌入式系统、操作系统以及各类应用软件的开发。
在C语言中,基本数据类型是构建程序的基础。
本文将介绍C语言中的基本数据类型及其运算。
C语言中的基本数据类型包括整型、浮点型、字符型和布尔型。
其中整型包括有符号整型和无符号整型,浮点型包括单精度浮点型和双精度浮点型。
字符型用于表示字符和字符串,布尔型则表示真或假的逻辑值。
整型数据类型可以存储整数值,有符号整型可以表示正负整数,而无符号整型只能表示非负整数。
在C语言中,有符号整型的大小可以用关键字signed来表示,默认为signed int。
无符号整型的大小可以用关键字unsigned来表示,默认为unsigned int。
整型有不同的长度,如char(字符型)为1字节,int为4字节,long为8字节等。
以下是C语言中的整型数据类型及其范围:- char:1字节,范围为-128到127(有符号),0到255(无符号)- short:2字节,范围为-32,768到32,767(有符号),0到65,535(无符号)- int:4字节,范围为-2,147,483,648到2,147,483,647(有符号),0到4,294,967,295(无符号)- long:8字节,范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符号),0到18,446,744,073,709,551,615(无符号)浮点数是用于存储小数的一种数据类型。
C语言提供了两种浮点型数据类型:float和double。
float为单精度浮点型,占用4字节;double为双精度浮点型,占用8字节。
浮点型数据在内存中存储的形式为二进制浮点数。
字符型数据用于表示字符和字符串。
C语言中的字符型数据类型为char,占用1字节。
字符可以用单引号来表示,如'a'、'b'、'c'等。
第2章C语言基本数据类型及运算
第2章 C语言基本数据类型及运算
2.3 变量
变量是指在程序运行过程中其值可以发生变化的量。 2.3.1变量的数据类型及其定义 1.变量的数据类型(基本)
字符型、整型、单精度实型、双精度实型,它们 分别用关键字char、int、float、double进行定义。 另外,还有无符号整型和无值型,它们分别用关键 字unsigned和void进行定义。 见表2,表3
p33
第2章 C语言基本数据类型及运算
数据类型 变量列表; 系统默认类型int
int a, b, c; char ch, str; double f_1, f_2; float x, y, z, _w1, _w2; unsigned int u_1, u_2; long int g1, g2;
第2章 C语言基本数据类型及运算
第2章 C语言基本数据类型及运算
字符型变量
字符型变量在计算机内存储的是其字符对应的ASCII码值. 例如:char c1=’A’; 例2.9】输入英文字母’A’,转换成小写字母输出。 #include <stdio.h> main(){
char c1,c2; c1=getchar( ) putchar(c1); c2=c1+32; putchar(c2); }
第2章 C语言基本数据类型及运算
2.5.2 关系运算符和关系表达式
关系运算是用来进行两个操作对象的比较的运算,关系运算 的运算结果是一个逻辑值,即“真”值或“假”值。如果结 果为“真”值,用数字“1”来表示,如果结果为“假”值, 则用数字“0”表示。p41
C语言提供6种关系运算符:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章基本数据类型与基本运算本章主要介绍程序设计中高级语言提供的数据类型和其上允许的基本运算。
在介绍这些内容时,我们通过穿插一些实例介绍如何应用数据类型与基本运算来解决一些简单的问题。
2.1 数据类型的概念2.1.1 为什么程序设计语言中要引入“数据类型”这一概念?2.1.2 数据类型的概念数据类型是程序设计语言中的一个非常重要的概念。
那么,什么是数据类型呢?数据类型是由该类型的数据的值域(即值集)和在这些数据上所有施加的运算的集合(即运算集或操作集)组成。
值域指出了每一种数据类型的变量合法的数据取值范围,而运算集合则规定了每一种数据类型的变量和数据其上所允许进行的运算。
值域和运算集是数据类型的两个基本属性。
在下面介绍Pascal语言的数据类型的有关章节中,对每一种数据类型均将说明这两种属性。
2.1.3 数据类型的代数理论基础一个数据类型是一个二元组(D,R)。
其中,D是一个数据类型的值域,R是建立在D上的运算(操作)的集合。
这个二元组构成了一个代数系统。
其中,D叫做该系统的基集。
从本质上说,一个代数系统就是一个带运算的集合,而一个数据类型就是一个代数系统。
从这个概念出发,程序设计语言理论在数据结构的基础上发展了一些数据和类型的代数理论。
这些理论属于程序设计语言语义学的范畴,将来,有兴趣的学生在具备了比较深入的基础之后,可以作进一步的了解。
2.1.4 Pascal语言中数据类型的分类Pascal语言的优点之一是有丰富的数据类型,按照其定义者的不同可分为下面几类,如表2-1所示。
整数类型实数类型系统预定义的数据类型布尔类型(逻辑类型) 基本(标准)数据类型字符类型Pascal 枚举类型数据类型子界类型数组类型用户自定义的数据类型记录类型构造型数据类型集合类型文件类型指针类型图2-1 Pascal的数据类型2.2 基本数据类型本节介绍四种基本数据类型(Elementary Date Type),它们是整数类型、实数类型、布尔类型(逻辑类型)和字符类型。
基本数据类型又称为标准数据类型(Standard Date Type),我国国家标准中将它改称为需求数据类型。
基本数据类型是语言系统预先定义或规定的数据类型。
2.2.1 整数类型整数类型(Integer Date Type)简称整型,在Pascal语言中用类型标识符integer表示整数类型。
整型的数据可以是正整数、负整数和零,其中,正整数和零可以省略“+”号。
1.整数类型的值域任何计算机系统由于受机器字长的限制,它所能表示的整数只是数学中整数集合的一个有穷的子集合。
其中,最大整数为maxint,它的值与具体机器的字长有关。
一般地,若机器的字长为W时(假设用一位表示数符),由于整数在机器内采用二进制补码表示,因此,maxint=2w-1-1,其原因在“计算机组成原理”课程中将有详细解答。
整数类型的值域为[-maxint ,maxint]。
2.整数类型的数据允许进行的运算 (1) 算术运算若a,b 为整型数,两者进行算术运算如表2-1所示。
表2-1 整型数据的算术运算附注: 关于mod 运算符(Operator),不同的Pascal 语言版本的mod 运算是有差别的。
标准Pascal 中规定,a mod b 的结果都是正整数,而且要求b> 0;Turbo Pascal 语言中规定a 、b 可以为正数或负数,其运算结果的符号与被除数a 相同。
(2) 关系运算两个整型数据可以进行关系运算,其结果是一个布尔型的数据:true 或者false 。
关系运算共有六种:=(等于)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。
例如,① 8 <> 9的结果为true ;② 3 > 9的结果为false 。
2.2.2 实数类型实数类型(Real Date Type)简称实型。
在Pascal 语言中用类型标识符real 表示实数类型。
整型的数据可以是正、负实数和实数零,其中,正实数和零可以省略“+”号。
实数在机器内的表示形式总是用浮点数的表示方法来实现的。
1.实数类型的值域在数学中,实数是一个无穷的连续集合。
但是,Pascal 语言中实数类型的数据只能是数学中实数的一个有穷的子集合,这是因为受计算机系统字长的限制。
不同的计算机系统,机器的字长不同,表示实数的方式不完全相同(虽然都用浮点数方式表示),表示实数在精度上210n -- 310n -图2-2 实数类型的数据的值域2.实数类型的数据允许进行的运算 (1) 算术运算若a,b 至少有一个为实型数据,两者进行算术运算的结果类型如表2-2所示。
表2-2 实型数据的算术运算附注: 若a,b均为整型数据,则a/b的结果类型也是实型数据。
(2) 关系运算两个实型数据,或一个为整型数据而另一个是实型数据,均可以进行关系运算,其结果是一个布尔型的数据:true或者false。
关系运算共有六种:=(等于)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)3.为什么把数区分为整数类型和实数类型?虽然在数学意义上整数是实数的一个子集,但是,在Pascal语言中还是将整数所属的整型类型从实数所属的实型类型中独立出来,这是为什么呢?首先,将两者分离出来,在机器中分别采用不同的表示方法,使它们分别表现出不同的特点,便于根据实际问题编写高质量的程序。
整型数据采用定点方式表示,优点是精确而且运算快速,缺点是数据的表示范围小;实型数据采用浮点方式表示,优点是其数据的表示范围比整数类型的数据的表示范围大得多(这给计算带来了很大方便),缺点是不精确而且运算速度较慢。
其次,便于编译程序生成高效的目标代码;第三,它符合人们的日常思维习惯。
2.2.3 布尔类型布尔类型(Boolean Date Type)又被称为逻辑类型,在Pascal语言中用类型标识符boolean表示布尔类型。
1.布尔类型的值域布尔类型的数据仅有两个:true(真)和false(假)。
2.布尔类型的数据允许进行的运算(1) 逻辑运算若a,b为布尔型数据,两者进行逻辑运算的结果类型如表2-3所示。
(2) 关系运算在Pascal语言中,布尔类型是有序类型,并且规定false < true。
因此,两个布尔类型数据可以进行关系运算,其结果是一个布尔型的数据:true或者false。
关系运算一共有六种:=(等于)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。
例如,true<>false 的结果为true。
2.2.4 字符类型计算机系统所处理的绝大多数数据是以字符形式输入/输出的。
各种程序设计语言的编译程序通常都能自动将以字符形式输入/输出的数据与其它数据类型进行转换,但在许多情况下,需要程序员在设计程序时,直接处理字符数据。
字符数据类型是构成字符串类型的基础。
所谓字符串类型实际上是标准Pascal语言中的压缩的字符数组类型,Turbo Pascal语言中引入了专门的字符串数据类型。
字符数据类型(Character Date Type)简称字符型,在Pascal语言中用类型标识符char 表示字符类型。
在程序中,用单引号将字符类型数据的集合中的一个字符括起来以表示字符类型的数据值,也称字符常数,如′A′、′a′。
注意,用单引号括起来的字符序列被称为字符串,也称字符串常数,如′Ab′、′abc′等。
字符串不是字符型数据,它是字符型的一种扩展数据类型,我们将在第六章介绍。
1.字符类型数据的值域2.字符类型数据允许进行的运算——关系运算在Pascal语言中,字符类型是有序类型(即该类型的数据是有顺序的)。
ASCII码字符集中字符的顺序规定如下:① 0-9十个数字字符的ASCII码值依次增大;② A-Z二十六个大写英文字母的ASCII码值依次增大;③ a-z二十六个小写英文字母的ASCII码值依次增大;④在ASCII码字符集中数字、大写英文字母、小写英文字母的ASCII码值依次增大。
两个字符型数据可以进行关系运算,其结果是一个布尔型的值:true或者false。
关系运算共有6种:=(等于)、<>(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。
2.3 常量与变量通过上面介绍我们知道,Pascal语言的计算机程序中所处理的任何数据均有其类型。
从任何类型的数据在程序运行过程中表现出的性态来看,有的数据在程序运行的过程中其值发生了变化,我们称之为变量(Variable),有的数据在程序运行的过程中其值始终不发生变化,这样的数据被称为常量(Constant)。
下面我们分别介绍变量和常量的概念。
2.3.1 常量常量分成字面常量和非字面常量。
常量本身有其数据类型。
1.字面常量字面常量(Literal Constant)又被称为字面值或直接量,它是某一类型的一个数据的具体值的字面表示。
(3) 布尔类型的字面常量布尔类型的字面常量仅有两个:true(真)和false(假)。
(4) 字符类型的字面常量字符类型的字面常量用单引号将字符类型数据集合中的一个字符值括起来,以避免与语言中出现的字符混淆。
例如,′A′,′a′,′0′,′&′, ′o′,等等。
2.非字面常量非字面常量又被称为符号常量(Symbolic Constant)。
在程序中,我们可以定义某标识符来代表某字面常量,这样定义之后就可以用该标识符来代表这个字面常量。
此后,该标识符即为符号常量。
符号常量的引入,可以帮助记忆,便于使用,提高程序的可读性和可维护性(Maintainability)。
2.3.2 变量1.变量说明在Pascal语言中,程序中所用到的(静态)变量必须遵循在变量说明部分中先说明(定义),然后再使用的原则。
下面先介绍(静态)变量说明语句(Variable Declaration Statement)的语法和语义,然后作几点说明。
(1) 语法变量说明的语法图如图2-8所示。
图2-8 变量说明的语法图(2) 语义上述变量说明的语义是给变量指定名字,并把每个变量与某一确定的数据类型联系起来,这样就规定了该变量的值域和其上允许进行的运算。
程序运行前,编译程序在编译时将事先给该变量分配相应的存储空间。
2.说明(1) 变量可以用名字、属性、存储空间和值四个要素来刻画,抽象地描述一个变量可以用一个(名字,属性,存储空间,值)四元组来表示,尽管在程序设计中形式上人们通常只通过变量名来使用变量。
正确理解变量的四个要素,是学习数组、指针等类型的基础。