C语言第2章第3章.ppt

上传人:wuy****n92 文档编号:70756162 上传时间:2023-01-27 格式:PPT 页数:92 大小:319.49KB
返回 下载 相关 举报
C语言第2章第3章.ppt_第1页
第1页 / 共92页
C语言第2章第3章.ppt_第2页
第2页 / 共92页
点击查看更多>>
资源描述

《C语言第2章第3章.ppt》由会员分享,可在线阅读,更多相关《C语言第2章第3章.ppt(92页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、高级语言程序设计高级语言程序设计(C语言)语言)参考书参考书1C语言程序设计谭浩强语言程序设计谭浩强著著清华大学出版社清华大学出版社2C语语言言大大全全(第第二二版版)HerbertSchildt著著戴戴健健鹏鹏译译电子工业出版社电子工业出版社3TurboC实用大全徐金梧实用大全徐金梧等编著等编著机械工业版社机械工业版社4C语语言言程程序序设设计计教教程程、实实验验与与练练习习杨杨开开城城张张志志坤坤编著编著人民邮电出版社人民邮电出版社第二章第二章 C语言概述语言概述2.1 C2.1 C语言概述语言概述2.2 C2.2 C语言的基本结构语言的基本结构2.3 C2.3 C语言的基本组成语言的基本

2、组成2.4 C2.4 C程序上机执行过程程序上机执行过程2.1C语言概述语言概述2.1.1 2.1.1 C语言的发展语言的发展2.1.2 2.1.2 C语言的特点语言的特点2.1.1C语言的发展语言的发展 C语语言言是是很很有有发发展展前前途途的的计计算算机机高高级级语语言言。它它适适合合于于作作为为系系统统描描述述语语言言,既既可可用用来来写写系系统统软软件件,也也可可用来写应用软件。用来写应用软件。2.1.2C语言的特点语言的特点C语言的特点是多方面的语言的特点是多方面的:1适应性强。适应性强。2应用范围广。应用范围广。3语言简洁,使用灵活,便于学习和应用。语言简洁,使用灵活,便于学习和应

3、用。4运算符丰富,语言的表达能力强。运算符丰富,语言的表达能力强。5数据结构丰富,具有现代化语言的各种数据结构。数据结构丰富,具有现代化语言的各种数据结构。6具有结构化的控制语句,控制流程结构化。具有结构化的控制语句,控制流程结构化。7生成目标代码质量高,程序执行效率高。生成目标代码质量高,程序执行效率高。8可移植性好。可移植性好。9C语语言言允允许许直直接接访访问问物物理理地地址址,能能进进行行位位操操作作,能能实实现现汇汇编编语语言言的的大大部部分分功功能能,可可以以直直接接对对硬硬件件进进行行操操作。作。2.2C程序的基本结构程序的基本结构 简单的简单的C程序介绍程序介绍 C程序的基本组

4、成程序的基本组成2.2.1简单的简单的C程序介绍程序介绍例例1(P24例例21)/*文件名:文件名:A1.C*/*This is a hello C program.*/main()printf(*n);printf(Happy New Year!n);printf(*n);说明:说明:双引号内的字符串按原样输出,双引号内的字符串按原样输出,“n”是换行符。是换行符。2.2.1简单的简单的C程序介绍程序介绍例例2/*文件名:文件名:A2.C*/*求两数之和求两数之和*/main()int a,b,sum;/*定义变量定义变量*/a=123;b=456;/*给变量赋值给变量赋值*/sum=a+b

5、;/*求和求和*/printf(sum=%dn,sum);/*输出结果输出结果*/说明:说明:“%d”表表示示输输入入输输出出的的格格式式字字符符串串,用用来来指指定定输输入入输输出时数据类型和格式。出时数据类型和格式。“%d”表示十进制整数类型。表示十进制整数类型。2.2.2C程序的基本组成程序的基本组成C程序的一般组成形式如下程序的一般组成形式如下:Main()/*主函数说明主函数说明*/变量定义变量定义/*主函数体主函数体*/执行语句组执行语句组子函数名子函数名1(参数参数)/*子函数说明子函数说明*/变量定义变量定义/*子函数体子函数体*/执行语句组执行语句组子函数名子函数名2(参数参

6、数)/*子函数说明子函数说明*/变量定义变量定义/*子函数体子函数体*/执行语句组执行语句组子函数名子函数名N(参数参数)/*子函数说明子函数说明*/变量定义变量定义/*子函数体子函数体*/执行语句组执行语句组2.3C语言的基本组成语言的基本组成 基本字符集基本字符集2.3.2标识符标识符2.3.3关键字关键字2.3.4语句语句2.3.5标准库函数标准库函数2.4C程序上机执行过程程序上机执行过程 C程序上机执行过程程序上机执行过程 TurboC使用初步使用初步2.4.1C程序上机执行过程程序上机执行过程C源程序源程序(.C文件)文件)目标程序目标程序(.OBJ文件)文件)编译编译2.4.1C

7、程序上机执行过程程序上机执行过程目标程序目标程序(.OBJ文件)文件)可执行程序可执行程序(.EXE文件)文件)链接链接第三章第三章数据类型与运算规则数据类型与运算规则3.1 3.1 数据与数据类型数据与数据类型3.2 C3.2 C语言的基本数据类型及其表示语言的基本数据类型及其表示3.3 3.3 算术运算与赋值运算算术运算与赋值运算3.4 3.4 关系运算与逻辑运算关系运算与逻辑运算3.5 3.5 位运算位运算3.6 3.6 其他运算其他运算 3.7 3.7 混合运算及数据类型转换混合运算及数据类型转换3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.1.1 3.1.1 什么是

8、数据和数据类型什么是数据和数据类型 数数据据是是程程序序加加工工、处处理理的的对对象象,也也是是加加工的结果。工的结果。把把程程序序语语言言中中具具有有这这样样相相同同性性质质的的数数据据集集合称为合称为数据类型数据类型。3.1数据与数据类型数据与数据类型 3.1.2 C 3.1.2 C语言中的数据类型语言中的数据类型 整数型整数型 int int 单精度型单精度型 float float 基本类型基本类型 实数型(浮点型)实数型(浮点型)双精度型双精度型 double double 字符型字符型 char char 指针类型指针类型 数据类型数据类型 数组型数组型 结构型结构型 struct

9、 struct 构造类型构造类型 联合型联合型 union union 枚举型枚举型 enum enum 无值类型(空类型)无值类型(空类型)void void3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.1 3.2.1 常量与变量常量与变量 1 1常量常量 常常量量是是指指在在程程序序运运行行时时其其值值不不能能改改变变的的量量。C C语语言提供的常量有:言提供的常量有:整型常量整型常量 数值常量数值常量 常量常量 实型常量实型常量 字符常量字符常量 字符常量字符常量 字符串常量字符串常量例如,例如,123123,3.143.14,-3000-3000等都是常量。等都是

10、常量。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.1 3.2.1 常量与变量常量与变量 2 2符号常量符号常量 在在C C语言中,常量还可以用标识符来表示。语言中,常量还可以用标识符来表示。C C语语言言中中用用宏宏定定义义命命令令对对符符号号常常量量进进行行定定义义,其其定定义形式如下:义形式如下:#define#define 3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.1 3.2.1 常量与变量常量与变量 3变量变量变量变量是在程序运行过程中可以改变的量。是在程序运行过程中可以改变的量。C C语言提供的基本变量类型有:语言提供的基本变量类型有

11、:整型变量整型变量 数值变量数值变量 变量变量 实型变量实型变量 字符变量字符变量 指针变量指针变量 C C语语言言要要求求:程程序序中中使使用用的的每每个个变变量量都都必必须须先先定定义后使用。义后使用。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.1 3.2.1 常量与变量常量与变量 4变量的定义变量的定义定义格式:定义格式:类型说明符类型说明符;3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.2 3.2.2 整型数据及其表示整型数据及其表示 1 1整型类型整型类型 C C语语言言提提供供了了多多种种整整数数类类型型,用用以以适适应应不不同同情情况

12、况的的需需要要。常常用用的的整整数数类类型型有有:整整型型、长长整整型型、无无符符号号整整型型和和无无符符号号长长整整型型等等4 4种种基基本本类类型型。不不同同类类型型的的差差别别在在于于采采用用不不同同位位数数的的二二进进制制编编码码方方式式,所所以以就就要要站站用用不不同同的的存存储储空空间间,就就会会有有不不同同的的数数值值表表示示范范围。围。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.2 3.2.2 整型数据及其表示整型数据及其表示 2整型常量整型常量 在在C C语语言言中中,所所有有的的数数值值型型常常量量都都带带有有符符号号,所所以以整整型型常常量量只只区

13、区别别整整型型和和长长整整型型两两种种形形式式。整整型型和和长长整整型型常常量量均均可可用用十十进进制制、八八进进制制和和十十六六进进制制三三种种形式表示。形式表示。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.2 3.2.2 整型数据及其表示整型数据及其表示 3整型变量整型变量 在在C C语语言言中中,整整型型变变量量有有上上述述整整型型数数据据所所具具有有的的4 4种种类类型型:整整型型、长长整整型型、无无符符号号整整型型和和无无符符号号长长整整型。型。整整型型变变量量一一关关键键字字intint作作为为基基本本类类型型说说明明符符,另另外外配配合合4 4个个类类型型

14、修修饰饰符符,用用来来改改变变和和扩扩充充基基本本类类型型的的含含义义,一一适适应应灵灵活活的的应应用用。可可作作用用于于基基本本型型intint德德个个类类型修饰符有:型修饰符有:long长长short短短signed有符号有符号unsigned无符号无符号3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.2 3.2.2 整型数据及其表示整型数据及其表示 4整型数据应用中的几个问题整型数据应用中的几个问题整型数据在使用中应注意以下几个问题整型数据在使用中应注意以下几个问题:(1)变量要先定义后使用变量要先定义后使用(2)数据溢出数据溢出(3)常量与变量的类型要匹配常量与变量

15、的类型要匹配 3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.3实型数据及其表示实型数据及其表示1实型类型实型类型 C C语语言言中中提提供供了了3 3种种用用于于表表示示实实数数的的类类型型:单单精精度型、双精度型和长双精度型。度型、双精度型和长双精度型。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.3实型数据及其表示实型数据及其表示2实型常量实型常量 实实型型常常量量也也被被称称为为实实型型数数或或浮浮点点数数。C C语语言言中中,实实型型常常量量一一般般都都作作为为双双精精度度来来处处理理,并并且且只只用用十十进进制制数数表表示。示。实型常量有实

16、型常量有2 2种书写格式:小数形式和指数形式。种书写格式:小数形式和指数形式。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.3实型数据及其表示实型数据及其表示3实型变量实型变量 在在C C语语言言中中实实型型变变量量分分为为单单精精度度、双双精精度度和和长长双双精精度度3 3中中类类型型。ANSI ANSI C C标标准准允允许许的的定定义义3 3种种实实型型变变量量的的关关键字如下:键字如下:float单精度单精度double双精度双精度longdouble长双精度长双精度3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.3实型数据及其表示实型数据及其

17、表示4整型数据应用中的误差问题整型数据应用中的误差问题例例3 3(P45P45例例3-33-3)输出实型数据输出实型数据a a和和b b。/*文件名:文件名:A6.C*/*输出实型数据输出实型数据a,b*/main()float a;double b;a=12345.6789;printf(a=%f,b=%fn,a,b);理想结果应该是按照原样输出,即:理想结果应该是按照原样输出,即:a=12345.6789a=12345.6789,但实际运行输出的结果为但实际运行输出的结果为a=12345.678711a=12345.678711,3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示

18、3.2.4字符型数据及其表示字符型数据及其表示1字符型类型字符型类型 文文字字处处理理是是计计算算机机的的一一个个重重要要应应用用领领域域,这这个个应应用用领领域域的的程程序序必必须须能能够够使使用用和和处处理理字字符符形形式式的的数数据据。在在C C语语言言中中,字字符符型型数数据据包包括括字字符符和和字字符符串串两两种种,例例如如aa是字符,而是字符,而”Windows”Windows”是字符串。是字符串。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示2字符型常量字符型常量字字符符常常量量也也被被称称为为字字符符常常数数。C C语

19、语言言中中字字符符常常量量是是括括在在一一对对单单引引号号内内的的一一个个字字符符。例例如如:xx、BB、bb、$、?、(表表示示空空字字副副)、33都都是是字字符符常常量量。注注意意其其中中BB和和bb是是不不同同的的字字符符常量。常量。除除了了以以上上形形式式的的字字符符常常量量,对对于于常常用用的的但但却却难难以以用用一一般般形形式式表表示示的的不不可可显显示示字字符符,C C语语言言提提供供了了一一种种特特殊殊的的字字符符常常量量,即即用用一一个个转转义义标标识识符符“”“”开开头头,后后续续需需要转义字符来表示常用的转义字符序列的字符常量。要转义字符来表示常用的转义字符序列的字符常量

20、。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示2字符型常量字符型常量转转义义字字符符是是一一种种特特殊殊形形式式的的字字符符常常量量,其其意意思思是是将将转转义义符符“”后后的的字字符符原原来来的的含含义义进进行行转转换换,变变成成某某种种另另外特殊约定的含义。外特殊约定的含义。例如,例如,n换行换行015015是是八八进进制制字字符符串串,它它表表示示了了ASCII码码表表中中编码为十进制编码为十进制13的字符,也就是回车。的字符,也就是回车。x1f1f是是十十六六进进制制字字符符串串,它它表表示示了了ASCII码码表表中编码为十

21、进制中编码为十进制31的字符,也就是的字符,也就是。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示3字符型变量字符型变量字字符符型型变变量量用用于于存存放放字字符符常常量量,即即一一个个字字符符型型变变量量可可以以存存放放一一个个字字符符,所所以以一一个个字字符符型型变变量量占占用用1个个字字节节的内存容量。的内存容量。说说明明字字符符型型变变量量的的关关键键字字是是char,使使用用时时只只需需在在说说明明语语句句指指明明字字符符型型数数据据类类型型和和相相应应的的变变量量名名即即可可。例例如:如:chars1,s2;/*说明说明s

22、1,s2为字符型变量为字符型变量*/s1=A;/*As1*/s2=a;/*as2*/3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示4字符串常量字符串常量字字符符串串常常量量是是用用一一对对双双引引号号括括起起来来的的字字符符序序列列。双双引引号是字符串的边界符。号是字符串的边界符。例如:例如:“Iamastudebt.n”,”ABC”,”,”a”3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示4字符串常量字符串常量注意注意:(1)不不要要把把字字符符串串常常量量和和字字符符常常

23、量量混混淆淆,如如”a”和和a是是根根本本不不同同的的数数据据,前前者者是是字字符符串串常常量量,后后者者是是字字符符常量。常量。(2)如如果果字字符符串串常常量量中中出出现现双双引引号号,则则要要用用反反斜斜线线”将将其其转转意意,取取消消原原有有的的边边界界符符的的功功能能,使使之之仅仅作作为为双双引号字符起作用。引号字符起作用。例如,要输出字符串:例如,要输出字符串:Hesays:”Howdoyoudo.”应写成:应写成:printf(“Hesays:”Howdoyoudo.”);3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示4

24、字符串常量字符串常量说明说明:C语语言言对对字字符符串串常常量量的的长长度度不不加加限限制制,编编译译程程序序总总是是自自动动地地在在字字符符串串的的结结尾尾加加上上一一个个转转意意字字符符0(即即ASCII码码是是0,所所对对应应的的字字符符是是空空),作作为为字字符符串串常常量量的的结结束束标志。对字符串操作时,这个结束标志是非常重要的。标志。对字符串操作时,这个结束标志是非常重要的。3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.4字符型数据及其表示字符型数据及其表示5字符数据应用举例字符数据应用举例例例3(P47例例34)计算字符)计算字符A与整型数据与整型数据25

25、的和。的和。/*文件名:文件名:A7.C*/*求字符与整型数据之和求字符与整型数据之和*/main()char a;int b;a=A;b=a+25;printf(%c,%d,%c,%dn,a,a,b,b);/*分分别别以以字字符符型型和和整型两种格式输出整型两种格式输出a,b*/运行结果:运行结果:A,65,Z,903.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.5指针型数据及其表示指针型数据及其表示3.2C语言的基本数据类型语言的基本数据类型及其表示及其表示3.2.6变量的初始化变量的初始化通通常常一一个个变变量量是是先先说说明明,然然后后再再赋赋值值,在在C C语语言

26、言中中,也也可可以以对对变变量量进进行行初初始始化化,即即允允许许在在说说明明变变量量的的同同时对变量赋初值。时对变量赋初值。因因此此,变变量量赋赋值值有有两两种种方方法法,一一种种方方法法是是先先说说明明后后赋赋值值,另另一一种种是是在在说说明明变变量量的的同同时时对对变变量量赋赋初初值值,这这就就是是变变量量的的初初始始化化。所所有有类类型型的的变变量量都都可可以以初初始始化。化。3.3算术运算与赋值运算算术运算与赋值运算3.3.1 C3.3.1 C语言中的运算规则语言中的运算规则 3.3.2 3.3.2 算术算术运算符与算术表达式运算符与算术表达式 3.3.3 3.3.3 自加、自减运算

27、自加、自减运算 3.3.4 3.3.4 赋值赋值运算符与赋值表达式运算符与赋值表达式 3.3.5 3.3.5 组合组合赋值赋值运算符与组合赋值表达式运算符与组合赋值表达式 3.3.1C语言中的运算规则语言中的运算规则1 1运算符运算符 按其在表达式与运算对象的关系即连接运算对象的个数来分,可以将C语言的运算符分为:单目运算:一个运算符连接一个运算对象双目运算:一个运算符连接两个运算对象三目运算:一个运算符连接三个运算对象3.3.1C语言中的运算规则语言中的运算规则1 1运算符运算符 按按其其在在表表达达式式中中所所起起的的作作用用来来分分,可可以以将将C C语语言言的的运算符分为:运算符分为:

28、算术运算符算术运算符 自增自减运算符自增自减运算符 赋值与赋值组合运算符赋值与赋值组合运算符 关系运算符关系运算符 逻辑运算符逻辑运算符 位运算符位运算符 条件运算符条件运算符 逗号运算符逗号运算符其他其他3.3.1C语言中的运算规则语言中的运算规则2 2表达式表达式 表表达达式式是是用用运运算算符符将将运运算算对对象象连连接接起起来来的的符符合合C C语语言规则的有意义的式子。言规则的有意义的式子。3.3.1C语言中的运算规则语言中的运算规则3 3优先级和结合性优先级和结合性 C C语语言言中中的的运运算算具具有有一一般般数数学学运运算算的的概概念念,即即有有优优先级和结合性。先级和结合性。

29、优优先先级级:指指同同一一表表达达式式中中不不同同运运算算符符进进行行计计算算时时的的先后次序。先后次序。结结合合性性:结结合合性性是是针针对对同同一一优优先先级级的的多多个个运运算算符符而而言言的的,它它是是指指同同一一个个表表达达式式中中相相同同优优先先级级的的多多个个运运算算应遵循的运算顺序。应遵循的运算顺序。通通常常所所有有的的单单目目运运算算的的优优先先级级高高于于多多目目运运算算。C C语语言言规规定定,单单目目运运算算符符是是自自右右向向左左结结合合,双双目目运运算算符符是是自左向右结合。(见附录自左向右结合。(见附录A A)3.3.2算术运算符与算术表算术运算符与算术表达式达式

30、1 1算术运算符算术运算符 +*/%3.3.2算术运算符与算术表算术运算符与算术表达式达式2 2算术表达式算术表达式算算术术表表达达式式是是用用算算术术运运算算符符将将数数值值型型常常量量、变变量或函数连接起来的有意义的式子。量或函数连接起来的有意义的式子。3.3.3自加、自减运算自加、自减运算2 2算术表达式算术表达式自加运算自加运算+自减运算自减运算-自自加加、自自减减运运算算都都是是单单目目运运算算,其其作作用用是是使使变变量量的值的值1 1或减或减1 1。其优先级高于双目运算。其优先级高于双目运算。+i+i;-i-i;运运算算符符在在变变量量前前面面称称为为前前缀缀形形式式,表示变量在

31、使用表示变量在使用前前自动加自动加1 1或减或减1 1;i i+;i i-;运运算算符符在在变变量量后后面面称称为为后后缀缀形形式式,表示变量在使用表示变量在使用后后自动加自动加1 1或减或减1 1;3.3.4赋值运算符与赋值表赋值运算符与赋值表达式达式 1 1赋值运算符赋值运算符赋值运算符赋值运算符=注意:赋值运算符与数学中的等号的含义不同。注意:赋值运算符与数学中的等号的含义不同。3.3.4赋值运算符与赋值表赋值运算符与赋值表达式达式2 2赋值表达式赋值表达式 赋赋值值表表达达式式是是用用赋赋值值运运算算符符将将一一个个变变量量和和一一个个表表达式连接起来的有意义的式子。达式连接起来的有意

32、义的式子。一般形式:一般形式:=求解过程:求解过程:计算计算 的值,然后将计算结果赋值给的值,然后将计算结果赋值给 。3.3.4赋值运算符与赋值表赋值运算符与赋值表达式达式3 3类型转换类型转换 在在对对赋赋值值表表达达式式求求解解过过程程中中,如如果果赋赋值值运运算算符符两两边边的的数数据据类类型型不不一一致致,赋赋值值时时要要进进行行类类型型转转换换。其其转转换换工工作作由由C C编编译译自自动动实实现现,转转换换原原则则是是以以赋赋值值号号左左边边的的变变量量类类型型为为准准。即即将将赋赋值值号号左左边边的的值值转转换换为为赋赋值值号号左左边边的的变变量量类类型型一一致。致。3.3.5组

33、合赋值运算符与组组合赋值运算符与组合赋值表达式合赋值表达式 1 1组合赋值运算符组合赋值运算符一般形式:一般形式:=为:为:+、*、/、%、|、&、所构成的组合运算符有:所构成的组合运算符有:+=+=、*=*=、/=/=、%=%=、=、|=|=、&=&=、=3.3.5组合赋值运算符与组组合赋值运算符与组合赋值表达式合赋值表达式2 2组合赋值表达式组合赋值表达式 用用组组合合赋赋值值运运算算符符将将一一个个变变量量和和一一个个表表达达式式连连接接起来的有意义的式子称为组合赋值表达式。起来的有意义的式子称为组合赋值表达式。一般形式:一般形式:功能:功能:对对 和和 进进行行组组合合赋赋值值运运算算

34、符符所所规规定定的的运运算算,并并将将运运算算结结果果赋赋值值给给 所所规规定定的的变变量。量。3.3.5组合赋值运算符与组组合赋值运算符与组合赋值表达式合赋值表达式一般形式:一般形式:组合赋值运算的作用等价于:组合赋值运算的作用等价于:=3.4关系运算与逻辑运算关系运算与逻辑运算3.4.1 关系运算符与关系表达式关系运算符与关系表达式 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 条件运算符与条件表达式条件运算符与条件表达式3.4.1关系运算符与关系表关系运算符与关系表达式达式1 1关系运算符关系运算符运算符运算符含义含义运算对象个数运算对象个数结合方向结合方向简例简例大于 双目运算自左至右

35、ab=大于等于 ”a=b小于 ”ab=小于等于 ”a=b!=不等于 ”a!=b=恒等于 ”a=b3.4.1关系运算符与关系表关系运算符与关系表达式达式1 1关系运算符关系运算符关关系系运运算算符符都都是是双双目目运运算算符符,其其结结合合性性是是从从左左到到右右结结合。合。优先级分为优先级分为2 2级:级:高级:高级:、=、=低级:低级:=、!=!=关系运算符的优先级低于算术运算符。关系运算符的优先级低于算术运算符。3.4.1关系运算符与关系表关系运算符与关系表达式达式2 2关系表达式关系表达式用用关关系系运运算算符符将将两两个个表表达达式式连连接接起起来来的的有有意意义义的的式式子子成为关系

36、表达式。成为关系表达式。一般形式:一般形式:其中:其中:1和和 2可可以以是是算算术术表表达达式式、关关系系表表达达式式、逻逻辑辑表表达达式式、赋赋值值表表达达式式和和字字符符表表达达式式。但但一一般般关关系系运运算算要要求求关关系系运运算算符符连连接接的的两两个个运运算算对对象象为为同类型的数据。同类型的数据。3.4.1关系运算符与关系表关系运算符与关系表达式达式2 2关系表达式关系表达式 关系表达式的运算结果是逻辑真值或逻辑假值。关系表达式的运算结果是逻辑真值或逻辑假值。真真TrueTrue:用:用1 1表示表示 假假FalseFalse:用:用0 0表示表示3.4.2逻辑运算符与逻辑表逻

37、辑运算符与逻辑表达式达式1 1逻辑运算符逻辑运算符运算符运算符含义含义运算对象个数运算对象个数结合方向结合方向简例简例&逻辑与 双目运算自左至右a&b|逻辑或 ”A|b!逻辑非 单目运算自右至左!a,!a=b 3.4.2逻辑运算符与逻辑表逻辑运算符与逻辑表达式达式1 1逻辑运算符逻辑运算符逻辑运算真值表逻辑运算真值表aba&ba|b!a!b0000110非00110非000101非0非011003.4.2逻辑运算符与逻辑表逻辑运算符与逻辑表达式达式2 2逻辑表达式逻辑表达式 用用逻逻辑辑运运算算符符将将多多个个关关系系表表达达式式连连接接起起来来的的有有意意义义的式子称为逻辑表达式。的式子称为

38、逻辑表达式。当当在在一一个个逻逻辑辑表表达达式式中中,含含有有多多个个逻逻辑辑运运算算符符时时,其优先级是:其优先级是:!&|!&|逻逻辑辑运运算算优优先先级级低低于于所所以以关关系系运运算算,而而!优优先先级级高高于于所有算术运算符。所有算术运算符。3.4.3条件运算符与条件表条件运算符与条件表达式达式 条件运算符是条件运算符是C C语言中唯一具有的三目运算符。语言中唯一具有的三目运算符。运算符运算符?:?:由由?:?:运算符构成的表达式称为条件表达式。运算符构成的表达式称为条件表达式。一般形式:一般形式:?:3.4.3条件运算符与条件表条件运算符与条件表达式达式一般形式:一般形式:?:功能

39、:功能:先计算先计算 1的值,若值为非的值,若值为非0 0,则计算,则计算 2的值,并将的值,并将 2的值作为整个条件表的值作为整个条件表达式的结果;若达式的结果;若 1的值为的值为0 0,则计算,则计算 3的值,并将的值,并将 3的值作为整个条件表达的值作为整个条件表达式的结果。式的结果。说明:说明:?和和:总是成对出现的。总是成对出现的。3.4.3条件运算符与条件表条件运算符与条件表达式达式例如例如,有以下条件表达式:有以下条件表达式:(ab)?a+b:a-b (ab)?a+b:a-b 当当a=8a=8,b=4b=4时,求解过程为:时,求解过程为:先先计计算算abab,关关系系表表达达式式

40、的的结结果果为为真真1 1,则则条条件件表表达式的结果为达式的结果为a+ba+b,即,即1212。3.5位运算位运算 位运算符位运算符 按按位逻辑运算位逻辑运算 移移位运算位运算 位运算赋值运算符位运算赋值运算符 3.5.1位运算符位运算符 运算符运算符 含义含义 运算对象个数运算对象个数结合方向结合方向 优先级优先级 按位求反按位求反 单目运算符单目运算符自右至左自右至左1 1 按位右移按位右移 ”2 2&按位与按位与 ”3 3 按位异或按位异或 ”4 4|按位或按位或 ”5 5说明:说明:(1 1)位运算的优先级是:)位运算的优先级是:&|(2 2)位运算的运算对象只能是整型()位运算的运

41、算对象只能是整型(intint)或字符型()或字符型(charchar)数据。)数据。(3 3)位运算是对运算两的每个二进制位分别进行操作。)位运算是对运算两的每个二进制位分别进行操作。3.5.2按位逻辑运算按位逻辑运算 按位逻辑运算包括:位与、位或、位异或和位否定。按位逻辑运算包括:位与、位或、位异或和位否定。设:设:a a和和b b是是1616位位2进制整数,已知进制整数,已知a a10101010,10011001,01010101,01110111b b01100110,00000000,11111111,101110113.5.2按位逻辑运算按位逻辑运算 1 1按位与运算(按位与运算

42、(&)c=a&b c=a&b a a10101010,10011001,01010101,01110111&b&b01100110,00000000,11111111,10111011 c c00100010,00000000,01010101,001100113.5.2按位逻辑运算按位逻辑运算 2 2按位或运算(按位或运算(|)c=a|b c=a|b a a10101010,10011001,01010101,01110111|b|b01100110,00000000,11111111,10111011 c c11101110,10011001,11111111,111111113.5.2按

43、位逻辑运算按位逻辑运算 3 3按位异或运算(按位异或运算()c=abc=ab a a10101010,10011001,01010101,01110111 b b01100110,00000000,11111111,10111011 c c11001100,20012001,10101010,11001100 3.5.2按位逻辑运算按位逻辑运算 4 4按位求反运算(按位求反运算()c=a c=a a a10101010,10011001,01010101,01110111 c c01010101,01100110,10101010,100010003.5.2按位逻辑运算按位逻辑运算 5 5按位

44、逻辑运算的应用按位逻辑运算的应用例例1010(P61P61例例3-103-10)设)设int x=7int x=7,y=xy=xy=x=7=(0000,0000,0000,0111)=1111,1111,1111,1000=-8y=x=7=(0000,0000,0000,0111)=1111,1111,1111,1000=-8可见,对可见,对x x的值的值7 7按位求反的结果为按位求反的结果为-8-8的补码表示,其原因是计算机中有:的补码表示,其原因是计算机中有:整数求负整数求负=整数求补整数求补=按位求反按位求反+1+1则则 按位求反按位求反=整数求负整数求负-1-1。注意求反运算与单目减和

45、逻辑非运算的区别:注意求反运算与单目减和逻辑非运算的区别:y=-x y=-x 结果为:结果为:y=-7y=-7y=!x y=!x 结果为:结果为:y=0y=03.5.2按位逻辑运算按位逻辑运算 例例1111(P61P61例例3-113-11)用按位与运算屏蔽特定位,即将指定位清)用按位与运算屏蔽特定位,即将指定位清0 0。要屏蔽特定位,只需要将要屏蔽的位与要屏蔽特定位,只需要将要屏蔽的位与0 0作逻辑与即可作逻辑与即可。设设n=051652n=051652(八进制数),(八进制数),m=n&0177m=n&0177,则,则m=052m=052。n n0 0,101101,001001,1101

46、10,101101,010010&0177&01770 0,000000,000000,00001 1,111111,111111 m m0 0,000000,000000,000000,101101,010010经过位与运算,将经过位与运算,将n n前的前的9 9位屏蔽掉,即截取位屏蔽掉,即截取n n后的后的7 7位。位。3.5.2按位逻辑运算按位逻辑运算 例例12(P62例例312)用按位与运算保留特定位。)用按位与运算保留特定位。要保留特定位,只需要将要保留的位与要保留特定位,只需要将要保留的位与1作逻辑与即可作逻辑与即可。设设n=011050,要要n右右起起第第2、4、6、8、10位位

47、的的原原值值保保留留下下来来,其其余余位位变变为为0,只要,只要n=n&01252,则有:,则有:n0,001,001,000,101,000&012520,000,001,010,101,010n0,000,001,000,101,0003.5.2按位逻辑运算按位逻辑运算 例例13(P62例例313)用按位或运算将指定的位置)用按位或运算将指定的位置1。要将特定位置要将特定位置1,只需要将要置,只需要将要置1的位与的位与1作逻辑或即可作逻辑或即可。设设x=061,y=016,则,则z=a|b为:为:x0000,0000,0011,0001|y0000,0000,0000,1110z0000,

48、0000,0011,11113.5.2按位逻辑运算按位逻辑运算 例例14(P62例例314)用按位异或运算将特定位翻转。)用按位异或运算将特定位翻转。要将特定位翻转,只需要将要翻转的位与要将特定位翻转,只需要将要翻转的位与1作逻辑异或即可作逻辑异或即可。设设a=015,将后,将后4位翻转,则:位翻转,则:a0000,0000,0011,11010170000,0000,0011,1111a0000,0000,0000,00103.5.3移位运算移位运算 C语语言言提提供供了了2个个移移位位运运算算:左左移移和和右右移移。它它们们是是把把整整数数作作为为二二进进制制位位序列,求出把这个序列左移若

49、干位或者右移若干位。序列,求出把这个序列左移若干位或者右移若干位。左移运算表达式的左移运算表达式的一般形式一般形式:xn功功能能:将将x右右移移n位位,将将右右边边移移出出的的低低位位舍舍弃弃,左左边边高高位位空空出出要要根根据据原原来来量量符符号号位位的的情情况况进进行行补补充充,对对无无符符号号数数,若若为为正正则则补补0,若若为为负负数数则则补补1。3.5.3移位运算移位运算 例如,设例如,设a=7,则,则b=a即即b=0000,01112即即b=0000,01112=0000,0001=1说说明明:左左移移的的一一个个特特殊殊用用途途是是将将整整数数值值乘乘以以2的的幂幂。例例如如,左

50、左移移运运算算表表达式达式1=、=、=有这些位运算赋值运算符可以构成位运算赋值表达式。例如:有这些位运算赋值运算符可以构成位运算赋值表达式。例如:x&=y相当于相当于x=x&yx=2相当于相当于x=x=3相当于相当于x=x3 x=5相当于相当于x=x53.6其他运算其他运算3.6.1 3.6.1 逗号运算符逗号运算符逗号运算符逗号运算符,逗逗号号运运算算符符的的作作用用是是将将多多个个表表达达式式连连在在一一起起构构成成逗逗号号表达式。表达式。一般形式:一般形式:,功功能能:将将逗逗号号表表达达式式中中各各表表达达式式按按从从左左到到右右的的顺顺序序依依次次求求值值,并并将将最最右右面面的的表

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com