CH2-数据与运算课件

上传人:壹****1 文档编号:570174662 上传时间:2024-08-02 格式:PPT 页数:66 大小:1.25MB
返回 下载 相关 举报
CH2-数据与运算课件_第1页
第1页 / 共66页
CH2-数据与运算课件_第2页
第2页 / 共66页
CH2-数据与运算课件_第3页
第3页 / 共66页
CH2-数据与运算课件_第4页
第4页 / 共66页
CH2-数据与运算课件_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《CH2-数据与运算课件》由会员分享,可在线阅读,更多相关《CH2-数据与运算课件(66页珍藏版)》请在金锄头文库上搜索。

1、继续教育学院继续教育学院继续教育学院继续教育学院第二章第二章 数据与运算数据与运算继续教育学院继续教育学院继续教育学院继续教育学院学习目的学习目的1 1、语言的数据类型,熟悉、语言的数据类型,熟悉C C语言中的运算符和表达式语言中的运算符和表达式2 2、掌握字符串常量与字符常、掌握字符串常量与字符常量的区别,转义字符的使量的区别,转义字符的使用用3 3、掌握各类数据混合运算、掌握各类数据混合运算4 4、掌握算术、掌握算术 逻辑逻辑 逗号运算逗号运算符和算术表达式符和算术表达式学习重点学习重点 不同数据类型的使不同数据类型的使用范围、赋值运算符用范围、赋值运算符和赋值表达式,逗号和赋值表达式,逗

2、号运算符和逗号表达式运算符和逗号表达式第第2章章数据与运算数据与运算学习难点学习难点1. 1. 运算符的优先级和运算符的优先级和结合性结合性2. 2. 数据的隐式转换问数据的隐式转换问题题 继续教育学院继续教育学院继续教育学院继续教育学院C语言的数据类型语言的数据类型标识符、常量与变量标识符、常量与变量运算符与表达式运算符与表达式数据类型转换数据类型转换程序举例程序举例第第2章章数据与运算数据与运算继续教育学院继续教育学院继续教育学院继续教育学院通常通常程序程序要对数据进行操作处理:要对数据进行操作处理:处理的对象是处理的对象是数据数据通过通过运算符和表达式运算符和表达式进行操作进行操作本章介

3、绍本章介绍C语言的基础,包括:语言的基础,包括:数据类型数据类型运算符和表达式运算符和表达式均是程序设计的基本知识均是程序设计的基本知识为什么讨论为什么讨论这些知识这些知识?继续教育学院继续教育学院继续教育学院继续教育学院2.1C C语言的数据类型语言的数据类型2.1.1 数据数据类型概述型概述 C数据类型数据类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型枚举类型枚举类型基本类型基本类型指针类型指针类型构造类型构造类型单精度型单精度型单精度型单精度型 双精度型双精度型双精度型双精度型 整数类型整数类型整数类型整数类型 字符类型字符类型字符类型字符类型 实实实实 数数数数 ( (浮

4、浮浮浮 点点点点 ) )型型型型空类型空类型空类型空类型继续教育学院继续教育学院继续教育学院继续教育学院1整型数据的类型基本整型基本整型 int无符号基本整型无符号基本整型 unsigned int短整型短整型 short或或short int无符号短整型无符号短整型 unsigned short 或或unsigned short int长整型长整型 long或或long int无符号长整型无符号长整型 unsigned long或或unsigned long int 2.1.2整型整型继续教育学院继续教育学院继续教育学院继续教育学院2.1.2整型整型类型类型关键字关键字长度长度值域值域有符号

5、短整数有符号短整数short,short int,signed short int2-215(215-1)无符号短整数无符号短整数unsigned short, unsigned short int20(216-1)有符号整数有符号整数int, signed int4-231(231-1)无符号整数无符号整数unsigned, unsigned int40(232-1)有符号长整数有符号长整数long, long int, signed long int4-231(231-1)无符号长整数无符号长整数unsigned long, unsigned long int40(232-1)Visual

6、 C+ 6.0规定的整数类型及相关数据规定的整数类型及相关数据继续教育学院继续教育学院继续教育学院继续教育学院1整数的几种书写形式整数的几种书写形式(1)十进制整常数十进制整常数十进制整常数没有前缀,其数码为十进制整常数没有前缀,其数码为09。以下各数是合法的十进制整常数:以下各数是合法的十进制整常数:237、-568、65535、1627;十进制写法中除非要写的整数本身就是十进制写法中除非要写的整数本身就是0,否则第一个数,否则第一个数字字符不能为字字符不能为0。(2)八进制形式八进制形式八进制整常数:八进制整常数必须以八进制整常数:八进制整常数必须以0开头,即以开头,即以0作为作为八进制数

7、的前缀。数码取值为八进制数的前缀。数码取值为07。八进制数通常是无。八进制数通常是无符号数。符号数。例如:例如:003103100356355L其中其中0031相当于十进制的相当于十进制的25继续教育学院继续教育学院继续教育学院继续教育学院整数的几种书写形式(续)整数的几种书写形式(续)(3)十六进制形式十六进制形式十六进制整常数的前缀为十六进制整常数的前缀为0X或或0x。其数码取值为。其数码取值为09,AF或或af。下面是用十六进制形式写出的一些整数和长整数:下面是用十六进制形式写出的一些整数和长整数:0x410x640XFF0X3242DL(4)整型常数的后缀:在整型常数的后缀:在16位字

8、长的机器上,基本整型的长度位字长的机器上,基本整型的长度也为也为16位,因此表示的数的范围也是有限定的。位,因此表示的数的范围也是有限定的。十进制无符号整常数的范围为十进制无符号整常数的范围为065535有符号数为有符号数为-32768+32767八进制无符号数的表示范围为八进制无符号数的表示范围为00177777十六进制无符号数的表示范围为十六进制无符号数的表示范围为0X00XFFFF或或0x00xFFFF。如果使用的数超过了上述范围,就必须用长整型数来表示。如果使用的数超过了上述范围,就必须用长整型数来表示。长整型数是用后缀长整型数是用后缀“L”或或“l”来表示的。来表示的。继续教育学院继

9、续教育学院继续教育学院继续教育学院2.1.3实型实型C语言中实型数据又称浮点型数据。一般语言中实型数据又称浮点型数据。一般C语言提供了三种语言提供了三种表示实数的类型:表示实数的类型:单精度浮点数类型,简称浮点类型,类型名为单精度浮点数类型,简称浮点类型,类型名为float双精度浮点数类型,简称双精度类型,类型名为双精度浮点数类型,简称双精度类型,类型名为double长双精度类型,类型名为长双精度类型,类型名为longdouble。所有整数类型和实数类型。所有整数类型和实数类型统称为算术类型。统称为算术类型。类类 型型字节数字节数 有效数字有效数字数值范围数值范围float47-3.410-3

10、8 3.41038double816-1.710-308 1.710308long double1019-3.410-4932 3.4104932继续教育学院继续教育学院继续教育学院继续教育学院2.1.3实型实型C语言中,实型数据有两种表示形式:语言中,实型数据有两种表示形式:(1) 十进制数形式:由数码十进制数形式:由数码0 9和小数点组成。和小数点组成。十进制数形式由数字序列和小数点组成。如:十进制数形式由数字序列和小数点组成。如:34.35、234.87等。等。0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均为合法的实等均为合法的实数。注意,必须有小数点。

11、数。注意,必须有小数点。(2) 指数形式:由十进制数,加阶码标志指数形式:由十进制数,加阶码标志“e”或或“E”以及阶以及阶码(只能为整数,可以带符号)组成。码(只能为整数,可以带符号)组成。其一般形式为:其一般形式为:a E n(a为十进制数,为十进制数,n为十进制整数)为十进制整数)其值为其值为 a10n。例如:例如:2.1E5 (等于等于2.1105) 3.7E-2 (等于等于3.710-2) 继续教育学院继续教育学院继续教育学院继续教育学院2.1.4字符型字符型字符类型数据主要用于程序的输入输出。此外,字符类型数据主要用于程序的输入输出。此外,文字处理方面的应用程序也必须能使用和处理字

12、文字处理方面的应用程序也必须能使用和处理字符形式的数据。符形式的数据。字符型数据的类型名是字符型数据的类型名是char。字符类型的数据包。字符类型的数据包括计算机所用编码字符集中的所有字符。括计算机所用编码字符集中的所有字符。常用的常用的ASCII字符集,其中的字符包括所有大小写英文字符集,其中的字符包括所有大小写英文字母、数字、各种标点符号字符,还有一些控制字符,字母、数字、各种标点符号字符,还有一些控制字符,共共128个。个。扩展的扩展的ASCII字符集包括字符集包括256个字符。字符集的所有字个字符。字符集的所有字符都是字符类型的值。符都是字符类型的值。在程序执行时,其中的字符就用对应的

13、编码表示,一在程序执行时,其中的字符就用对应的编码表示,一个字符通常占用一个字节。个字符通常占用一个字节。继续教育学院继续教育学院继续教育学院继续教育学院2.1.4字符型字符型C语言中字符的书写形式是用单引号括起的单个字符,例语言中字符的书写形式是用单引号括起的单个字符,例如如a、B、4等。还有一些特殊的控制字符无法这样写出,等。还有一些特殊的控制字符无法这样写出,例如换行字符等。例如换行字符等。C语言为它们规定了特殊写法:以反斜语言为它们规定了特殊写法:以反斜杠(杠()开头的一个字符或一个数字序列,这类字符称为)开头的一个字符或一个数字序列,这类字符称为转转义字符义字符。转义字符在。转义字符

14、在C语言程序中起着特殊作用语言程序中起着特殊作用。0000字符串结束标志字符串结束标志字符串结束标志字符串结束标志 n n回车换行回车换行回车换行回车换行 t t跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置跳到下一个输出位置 双引号字符双引号字符双引号字符双引号字符 dddddddddddd为为为为1 1到到到到3 3位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符 xhhxhhhhhh为为为为1 1到到到到2 2位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符继续教育学院继续教育学院继续教育学院

15、继续教育学院2.2标识符、常量与变量标识符、常量与变量2.2.1标识符标识符标识符:指程序中的变量、符号常量、数组、函数、类型、标识符:指程序中的变量、符号常量、数组、函数、类型、文件等对象的名字。标识符只能由字母、数字和下划线组文件等对象的名字。标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。成,且第一个字符必须为字母或下划线。命名规则如下:命名规则如下:(1)标识符的只能由下划线标识符的只能由下划线“_”、数字、数字09与与26个大小写字母个大小写字母az、AZ构成。构成。(2)标识符的首个字符必须是字母或下划线标识符的首个字符必须是字母或下划线“_”而不能是数字或其它

16、而不能是数字或其它符号。符号。(3)C语言中大小写字母是敏感的,即在标识符中,大写字母和小写字语言中大小写字母是敏感的,即在标识符中,大写字母和小写字母代表不同的意义。母代表不同的意义。例如:例如:Name和和name是两个不同的标识符。是两个不同的标识符。(4)标识符不能使用系统关键字,因为关键字是系统的保留字,它们标识符不能使用系统关键字,因为关键字是系统的保留字,它们已有特定的含义。已有特定的含义。继续教育学院继续教育学院继续教育学院继续教育学院2.2.1标识符标识符关键字:关键字:是指系统预定义的保留标识符,又称为是指系统预定义的保留标识符,又称为保留字保留字。它们有特定的含义,不能再

17、作其它用途使用。它们有特定的含义,不能再作其它用途使用。ANSIC定义定义的关键字共的关键字共32个个autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsigned continue forsignedvoiddefaultgotosizeofvolatiledoifwhilestatic继续教育学院继续教育学院继续教育学院继续教育学院2.2.2常量常量C语言中数据有语言中数据有常量常量和和变量变量之分。常量又称之分。常量又称常数,是指在程序运行中

18、其值不能被改变常数,是指在程序运行中其值不能被改变的量。的量。1.整型常量整型常量整型常量有三种表示方法:整型常量有三种表示方法:(1)十进制整数:如十进制整数:如123、678、7623。(2)八进制整数:以八进制整数:以0开头的数是八进制数。如开头的数是八进制数。如045表示八进制数的表示八进制数的(45)8。(3)十六进制整数:以十六进制整数:以0x开头的数是十六进制数。开头的数是十六进制数。如如0x123即即(123)16。继续教育学院继续教育学院继续教育学院继续教育学院常量(续)常量(续)2.实型常量实型常量在在C语言中,把带小数的数称为实数或浮点数。实语言中,把带小数的数称为实数或

19、浮点数。实型常量只能用十进制形式表示,不能用八进制和型常量只能用十进制形式表示,不能用八进制和十六进制形式表示。实型常量有两种表示方法:十六进制形式表示。实型常量有两种表示方法:(1)十进制数形式:由数字和小数点组成,如十进制数形式:由数字和小数点组成,如3.1415926,-0.12等都是十进制形式。等都是十进制形式。(2)指数法:如指数法:如1.8E5表示十进制数的表示十进制数的180000.0。注意:注意:(1)字母字母e或或E之前之前(即尾数部分即尾数部分)必须有数字。必须有数字。(2)e或或E后面的指数部分必须是整数。如:后面的指数部分必须是整数。如:4e-4.5是不合是不合法的。法

20、的。继续教育学院继续教育学院继续教育学院继续教育学院常量(续)常量(续)3.字符常量字符常量字符型常量是由一对单引号括起来的单个字符构成,例如字符型常量是由一对单引号括起来的单个字符构成,例如,a,b,1等都是有效的字符型常量。一般一个字符型常等都是有效的字符型常量。一般一个字符型常量的值是该字符集中对应的量的值是该字符集中对应的ASCII编码值编码值例如:字符常量例如:字符常量09的的ASCII编码值是编码值是4857。注意字符。注意字符0与数字与数字0是不同的。是不同的。由由于于字字符符在在内内存存中中是是以以二二进进制制形形式式表表示示的的,因因此此字字符符型型和和整型之间有整型之间有相

21、通性相通性,这些相通性表现在:,这些相通性表现在:字字符符型型数数据据可可以以用用整整型型形形式式输输出出;反反之之,一一定定范范围围内内的的整整数数也也可可以用字符形式输出;以用字符形式输出;字符型和整型之间可以进行混合运算;字符型和整型之间可以进行混合运算;整整型型变变量量可可以以接接收收字字符符常常量量,字字符符变变量量也也可可以以接接收收整整型型数数值值,当当然这都要在一定范围之内。然这都要在一定范围之内。继续教育学院继续教育学院继续教育学院继续教育学院常量(续)常量(续)4.字符串常量字符串常量C语言中没有专门的字符串类型的变量,但有字符串常量。语言中没有专门的字符串类型的变量,但有

22、字符串常量。字符串常量是由一对双引号括起来的字符序列组成的,例字符串常量是由一对双引号括起来的字符序列组成的,例如如“abc”、“a”等都是字符串常量。双引号仅起定界符的作用,等都是字符串常量。双引号仅起定界符的作用,并不是字符串中的字符。字符串常量中不能直接包括单引并不是字符串中的字符。字符串常量中不能直接包括单引号、双引号和反斜杠号、双引号和反斜杠“”(若要使用,可参照转义字符中(若要使用,可参照转义字符中介绍的字符使用)。介绍的字符使用)。5.符号常量符号常量符号常量就是使用符号代表常量,符号常量就是使用符号代表常量,C语言中允许用标识符定语言中允许用标识符定义一个常量,这种常量在义一个

23、常量,这种常量在C语言中被称之为语言中被称之为“宏定义宏定义”。继续教育学院继续教育学院继续教育学院继续教育学院2.2.3变量变量1.变量的有关规定变量的有关规定变量:变量:是命名的存储单元,存放能被程序修改的是命名的存储单元,存放能被程序修改的数据值,其类型显式说明。变量在使用前必须数据值,其类型显式说明。变量在使用前必须先先定义定义,然,然后后才能才能使用使用。在编译、连接时,系统依。在编译、连接时,系统依据变量定义为其分配内存空间。据变量定义为其分配内存空间。例如:例如:例如:例如:有有有有变量变量变量变量a a a a它的值是它的值是它的值是它的值是2008200820082008a

24、a20082008为变量分配的为变量分配的存储单元存储单元变量名变量名继续教育学院继续教育学院继续教育学院继续教育学院变量(续)变量(续)2.变量的定义变量的定义变量定义的一般格式:变量定义的一般格式:类型名类型名变量名变量名1,变量名变量名2,变量名变量名3,.,变量名变量名n;例如:例如:intn,m;/*定义定义int型变量型变量n和和m*/charch1,ch2;/*定义定义char型变量型变量ch1和和ch2*/doublex,y;/*定义定义double型变量型变量x和和y*/变量具有变量具有地址和值地址和值两种属性,常量只有值属性而两种属性,常量只有值属性而无地址属性。无地址属性

25、。继续教育学院继续教育学院继续教育学院继续教育学院变量(续)变量(续)3.变量的赋值变量的赋值设置变量的值可以有以下方法:设置变量的值可以有以下方法:(1)先定义后赋值先定义后赋值inta,b,c;a=2;b=5;c=10;(2)在定义时初始化在定义时初始化inta=5;继续教育学院继续教育学院继续教育学院继续教育学院变量(续)变量(续)注意:注意:在给变量赋值时,应注意以下问题:在给变量赋值时,应注意以下问题:(1)必须保证赋值符号右边的常量和赋值符号左边必须保证赋值符号右边的常量和赋值符号左边的变量类型一致,变量类型不一致将引起某些程的变量类型一致,变量类型不一致将引起某些程序错误。值得注

26、意的是,序错误。值得注意的是,C语言中整型和字符类型语言中整型和字符类型的数据可以互相转化。的数据可以互相转化。(2)若在定义变量的同时对变量初始化,若在定义变量的同时对变量初始化,变量不能变量不能连续赋初值连续赋初值。继续教育学院继续教育学院继续教育学院继续教育学院变量(续)变量(续)【例例2-1】整型数据和字符型数据的相互赋值整型数据和字符型数据的相互赋值#includevoidmain()charc1,c2;c1=97;c2=98;printf(%c%cn,c1,c2);程序运行程序运行结果:果:ab继续教育学院继续教育学院继续教育学院继续教育学院2.2.2常量常量【例例2-2】大小写字

27、母的转换大小写字母的转换#includevoidmain()char c1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(%c%cn,c1,c2);程序运行结果为:程序运行结果为:AB英文大小写字母之间有这样英文大小写字母之间有这样的关系:相应小写字母的的关系:相应小写字母的ASCII码比大写字母大码比大写字母大32。根据这一关系,我们可以将根据这一关系,我们可以将大小写字母任意转换。大小写字母任意转换。继续教育学院继续教育学院继续教育学院继续教育学院2.3运算符与表达式运算符与表达式作用:作用:对运算对象完成规定的操作运算对运算对象完成规定的操作运算对运算对象完

28、成规定的操作运算对运算对象完成规定的操作运算类型:类型:按运算对象分:按运算对象分:按运算对象分:按运算对象分:l l单目、双目、三目单目、双目、三目单目、双目、三目单目、双目、三目按功能分:按功能分:按功能分:按功能分:l l算术、赋值、关系、逻辑算术、赋值、关系、逻辑算术、赋值、关系、逻辑算术、赋值、关系、逻辑l l条件、逗号、位、其他条件、逗号、位、其他条件、逗号、位、其他条件、逗号、位、其他继续教育学院继续教育学院继续教育学院继续教育学院2.3运算符与表达式运算符与表达式优先级优先级指各种运算符号的运算优先顺序。指各种运算符号的运算优先顺序。指各种运算符号的运算优先顺序。指各种运算符号

29、的运算优先顺序。例如例如例如例如l l算术运算优先于关系运算算术运算优先于关系运算算术运算优先于关系运算算术运算优先于关系运算l l算术运算中先算术运算中先算术运算中先算术运算中先*/*/后后后后+-+-结合性结合性指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向指运算符号和运算对象的结合方向分为:从左向右分为:从左向右分为:从左向右分为:从左向右( (左结合左结合) )和从右向左和从右向左和从右向左和从右向左( (右结合右结合) )例如例如例如例如l l算术运算符为算术运算符为算术运算符为算术运算符为左结合左结合a-b+4a-b+4l l赋值运算符为

30、赋值运算符为赋值运算符为赋值运算符为右结合右结合a=b=5a=b=5继续教育学院继续教育学院继续教育学院继续教育学院2.3运算符与表达式运算符与表达式类型类型类型类型种类种类种类种类算术运算符算术运算符算术运算符算术运算符赋值运算符赋值运算符赋值运算符赋值运算符关系运算符关系运算符关系运算符关系运算符逻辑运算符逻辑运算符逻辑运算符逻辑运算符位运算符位运算符位运算符位运算符条件运算符条件运算符条件运算符条件运算符逗号运算符逗号运算符逗号运算符逗号运算符其他运算符其他运算符其他运算符其他运算符+ - * / % + - + -+ - * / % + - + -+ - * / % + - + -+

31、- * / % + - + -= += -= *= /= %= += -= *= /= %= += -= *= /= %= += -= *= /= %=&= |= = = = = = = = = = = = != & | !& | !& | !& | !& | & | & | & | ?:?:?:?:, , , ,& & & & sizeofsizeofsizeofsizeof( ( ( (数据类型标识符数据类型标识符数据类型标识符数据类型标识符) ) ) )继续教育学院继续教育学院继续教育学院继续教育学院1.算术运算符算术运算符C语言中基本的算术运算符共有语言中基本的算术运算符共有5种:种:

32、(1)加法运算符)加法运算符“+”:加法运算符为双目运算符,即应有两个量参与:加法运算符为双目运算符,即应有两个量参与加法运算。如加法运算。如a+b,4+8等。具有等。具有左左结合性。结合性。(2)减法运算符)减法运算符“-”:减法运算符为双目运算符。但:减法运算符为双目运算符。但“-”也可作负值运也可作负值运算符,此时为单目运算,如算符,此时为单目运算,如-x、-5等具有左结合性。等具有左结合性。(3)乘法运算符)乘法运算符“*”:双目运算,具有左结合性。:双目运算,具有左结合性。(4)除法运算符)除法运算符“/”:双目运算具有左结合性。参与运算量均为整型:双目运算具有左结合性。参与运算量均

33、为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。为双精度实型。(5)求余运算符)求余运算符(模运算符模运算符)“%”:双目运算,具有左结合性。要求参与运双目运算,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。算的量均为整型。求余运算的结果等于两数相除后的余数。C语言规定:语言规定:(1)%(取模运算符),仅用于整型变量或整型常量的运算(取模运算符),仅用于整型变量或整型常量的运算如:如:7%3,其值为,其值为1。(2)/(除运算符除运算符),当对两个整型的数据相除时结果为整

34、数,当对两个整型的数据相除时结果为整数如:如:7/3,其值为,其值为2,舍去小数部分,相当于整除操作。,舍去小数部分,相当于整除操作。继续教育学院继续教育学院继续教育学院继续教育学院2.算术表达式算术表达式算术表达式:用算术运算符和括号将运算对象算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的、符合(也称操作数)连接起来的、符合C语法规则的式语法规则的式子子以下是算术表达式的例子:以下是算术表达式的例子:a+b(a*2)c(x+r)*8-(a+b)7+isin(x)+sin(y)(+i)-(j+)+(k-)继续教育学院继续教育学院继续教育学院继续教育学院3.自增自减运算符自增自

35、减运算符(1)自加和自减运算符自加和自减运算符自加运算符自加运算符(+)是单目运算符,结合性为自右是单目运算符,结合性为自右至左,分前置自加和后置自加两种。至左,分前置自加和后置自加两种。l前置自加:前置自加:是是i先加先加1,然后引用,然后引用i。l后置自加:后置自加:是先引用是先引用i,然后,然后i加加1。自减运算符自减运算符(-)是单目运算符,结合性为自右是单目运算符,结合性为自右至左,分前置自减和后置自减两种。至左,分前置自减和后置自减两种。l前置自减:前置自减:是是i先减先减1,然后使用,然后使用i。l后置自减:后置自减:是先使用是先使用i,然后,然后i减减1。继续教育学院继续教育学

36、院继续教育学院继续教育学院运算符与表达式举例运算符与表达式举例【例例2-3】输出下面程序中输出下面程序中i的值的值#includevoidmain()inti=5,j;j=+i+i+;/结果不确定,不要写这样的表达式结果不确定,不要写这样的表达式printf(%d%dn,i,j);j=(+i)+(+i);/这样也不好,不要写这样的表达式这样也不好,不要写这样的表达式printf(%d%dn,i,j);继续教育学院继续教育学院继续教育学院继续教育学院2.3.2赋值运算符和赋值表达式赋值运算符和赋值表达式1.赋值运算符赋值运算符C语言中赋值运算符为语言中赋值运算符为“=”,它的作用是将赋值运算符右

37、,它的作用是将赋值运算符右边表达式或常量的值赋给其左边的变量。边表达式或常量的值赋给其左边的变量。2.复合赋值运算符复合赋值运算符C语言允许在赋值运算符语言允许在赋值运算符“=”之前加上其他运算符以构成之前加上其他运算符以构成复合的赋值运算符。凡是双目运算符,都可以和赋值运算复合的赋值运算符。凡是双目运算符,都可以和赋值运算一起组合成复合的赋值运算符。一起组合成复合的赋值运算符。变量变量=变量变量 运算符运算符 表达式表达式例如:例如:a+=10;等价于;等价于a=a+10;a*=b+10; 等价于等价于 a=a*(b+10);a%=10; 等价于等价于 a=a%10;C语言中采用这种复合运算

38、符,语言中采用这种复合运算符,一是为了简化程序,使程序精一是为了简化程序,使程序精练;二是为了提高编译效率。练;二是为了提高编译效率。继续教育学院继续教育学院继续教育学院继续教育学院3.赋值表达式赋值表达式(1)赋值表达式的一般形式为:赋值表达式的一般形式为:变量变量 赋值运算符赋值运算符 表达式表达式其功能是将赋值运算符右边的其功能是将赋值运算符右边的“表达式表达式”的值赋的值赋给赋值符号左边的变量。整个赋值表达式的值就给赋值符号左边的变量。整个赋值表达式的值就是被赋值的变量的值。是被赋值的变量的值。(2)优先级优先级赋值运算符的优先级较低,在所有运算符中,它赋值运算符的优先级较低,在所有运

39、算符中,它的优先级仅高于逗号运算符。的优先级仅高于逗号运算符。(3)结合性结合性赋值表达式按照自右向左的顺序结合。赋值表达式按照自右向左的顺序结合。继续教育学院继续教育学院继续教育学院继续教育学院2.3.3逗号运算符和逗号表达式逗号运算符和逗号表达式1.逗号运算符逗号运算符C语言提供一种特殊的运算符语言提供一种特殊的运算符逗号运算符。逗号运算符逗号运算符。逗号运算符为为“,”。用逗号运算符可以将两个表达式连接起来。用逗号运算符可以将两个表达式连接起来。2.逗号表达式逗号表达式(1)逗号表达式就是用逗号运算符把两个表达式连接起来所形逗号表达式就是用逗号运算符把两个表达式连接起来所形成的表达式。成

40、的表达式。其一般形式为:其一般形式为:表达式表达式1,表达式表达式2逗号表达式的求值过程是:先求表达式逗号表达式的求值过程是:先求表达式1的值,再求表达的值,再求表达式式2的值,表达式的值,表达式2的值就是整个逗号表达式的值。的值就是整个逗号表达式的值。逗号表达式的一般形式可以逗号表达式的一般形式可以扩展展为:表达式表达式1,表达式表达式2,表达式表达式3表达式表达式n表达式表达式n的的值为整个表达式的整个表达式的值。 继续教育学院继续教育学院继续教育学院继续教育学院逗号运算符和逗号表达式逗号运算符和逗号表达式(2)优先级优先级逗号运算符是所有运算符中级别最低的。例如:逗号运算符是所有运算符中

41、级别最低的。例如:逗号表达式:逗号表达式:x=2,4*5运算时,先算第一个赋值表达式运算时,先算第一个赋值表达式x=2,再算算术表达式,再算算术表达式4*5,最后算整个逗号表达式的值。逗,最后算整个逗号表达式的值。逗号表达式的值为算术表达式的值号表达式的值为算术表达式的值20。(3)结合性结合性逗号表达式的结合性为自左向右的。当有多个逗号表达式逗号表达式的结合性为自左向右的。当有多个逗号表达式串联在一起时,从左向右运算。依次求出每个表达式的值,串联在一起时,从左向右运算。依次求出每个表达式的值,整个逗号表达式的值为最后一个表达式的值。整个逗号表达式的值为最后一个表达式的值。在许多情况下,使用逗

42、号表达式的目的只是想分别得到各在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式常用于式的值,逗号表达式常用于for语句中,它可以表达多个初语句中,它可以表达多个初值或多个步长增量。值或多个步长增量。继续教育学院继续教育学院继续教育学院继续教育学院2.3.4关系运算符和关系表达式关系运算符和关系表达式1关系运算符关系运算符关系运算是逻辑运算的一种简单形式,主要用于比较。关系运算是逻辑运算的一种简单形式,主要用于比较。C语言中的关系运算符有以下六种:语言中的关系运算符有以下六种:

43、小于小于大于大于=大于等于大于等于=等于等于!=不等于不等于关系运算符的优先级低于算术运算符的优先级,并且等于关系运算符的优先级低于算术运算符的优先级,并且等于(=)和不等于和不等于(!=)运算符的优先级低于其他四种关系运算运算符的优先级低于其他四种关系运算符的优先级。关系运算符均为二元运算符。符的优先级。关系运算符均为二元运算符。2关系表达式关系表达式指由关系运算符将两个表达式连接起来的有意义的式子。指由关系运算符将两个表达式连接起来的有意义的式子。关系表达式的值只有两个,关系表达式的值只有两个,“真真”和和“假假”在在C语言中语言中“真真”用用1表示,表示,“假假”用用0表示表示当关系式成

44、立时其值为真,否则为假当关系式成立时其值为真,否则为假继续教育学院继续教育学院继续教育学院继续教育学院2.3.5逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式1逻辑运算符逻辑运算符为了表示复杂的条件,需要将若干个关系表达式为了表示复杂的条件,需要将若干个关系表达式连接起来,连接起来,C语言提供的逻辑运算符就是为实现这语言提供的逻辑运算符就是为实现这一目的的,逻辑运算符有:一目的的,逻辑运算符有:&逻辑与逻辑与|逻辑或逻辑或!逻辑非逻辑非2.逻辑表达式逻辑表达式逻辑表达式是用逻辑运算符将关系表达式或逻辑逻辑表达式是用逻辑运算符将关系表达式或逻辑量连接起来的有意义的式子。量连接起来的有意义的式子。逻

45、辑表达式的值也只有两个,逻辑表达式的值也只有两个,“真真”和和“假假”,其表示方法同关系表达式。其表示方法同关系表达式。继续教育学院继续教育学院继续教育学院继续教育学院2.3.6条件运算符和条件表达式条件运算符和条件表达式条件运算符条件运算符(?:)是三目运算符,结合性为自是三目运算符,结合性为自右至左。条件表达式的一般格式:右至左。条件表达式的一般格式:表达式表达式1?表达式表达式2:表达式表达式3表达式表达式1可以是任何表达式,常用关系表达可以是任何表达式,常用关系表达式和逻辑表达式。表达式式和逻辑表达式。表达式2和表达式和表达式3是任是任何表达式。如果表达式何表达式。如果表达式1为非为非

46、0,执行表达,执行表达式式2;否则,执行表达式;否则,执行表达式3。继续教育学院继续教育学院继续教育学院继续教育学院2.3.7位运算符和位运算表达式位运算符和位运算表达式位运算是对二进制位的运算,能实现汇编语言的某些位运算是对二进制位的运算,能实现汇编语言的某些功能。因此,功能。因此,C语言既具有高级语言的优点,又具有低语言既具有高级语言的优点,又具有低级语言的某些功能,适合开发系统软件。级语言的某些功能,适合开发系统软件。运算符类别运算符类别运算符运算符操作数个数操作数个数结合性结合性优先级优先级位移运算符位移运算符2 双目运算符双目运算符自左至右自左至右介介于于算算术术运运算算符符和和关关

47、系系运运算符之间算符之间位位逻逻辑辑运运算算符符 优先级高优先级高1 单目运算符单目运算符自右至左自右至左与自加、自减运算符同级与自加、自减运算符同级& 优先级高优先级高| 优先级低优先级低2 双目运算符双目运算符自左至右自左至右介介于于关关系系运运算算符符和和逻逻辑辑运运算符之间算符之间1位运算符位运算符按运算符按运算符类别和和优先先级从高到低方法,将位运算符的从高到低方法,将位运算符的优先先级和和结合性列在表。合性列在表。继续教育学院继续教育学院继续教育学院继续教育学院2 2位运算位运算& (位与)(位与)位与的运算规则是:位与的运算规则是: 0&0=0, 0&1=0, 1&0=0, 1&

48、1=1。 | (位或)(位或)位或的运算规则是:位或的运算规则是: 0|0=0, 0|1=1, 1|0=1, 1|1=1。 (位异或)位异或的运算规则是:(位异或)位异或的运算规则是:00=0, 01=1, 10=1, 11=0。 (取反)(取反)取反的运算规则是:取反的运算规则是: 0=1, 1=0。 (右移)(右移) 右移右移 n 位,相当该数除以位,相当该数除以 2 的的 n 次幂。对于次幂。对于正数和无正数和无符号数符号数,高位补高位补 n 个个0;对于;对于负数负数,高位补高位补 n 个个1。3 3复合赋值运算符复合赋值运算符在赋值运算在赋值运算符符“=”前加位运算符,构成赋值运算符

49、与位运前加位运算符,构成赋值运算符与位运算符结合的复合赋值运算符。算符结合的复合赋值运算符。如:如:= &= = |=位运算符和位运算表达式位运算符和位运算表达式2024/8/241继续教育学院继续教育学院继续教育学院继续教育学院2.4数据类型转换数据类型转换C语言中,各种类型的数据可以混合运算。语言中,各种类型的数据可以混合运算。字符型数据和整型数据之间可以通用。不字符型数据和整型数据之间可以通用。不同类型的数据在进行混合运算时,往往需同类型的数据在进行混合运算时,往往需要进行类型转换,将不同类型的数据转换要进行类型转换,将不同类型的数据转换成同种类型的数据,然后进行计算。成同种类型的数据,

50、然后进行计算。类型转换有三种方式:类型转换有三种方式:自动转换:通常是指那些保值转换自动转换:通常是指那些保值转换赋值转换:在赋值过程中进行类型转换赋值转换:在赋值过程中进行类型转换强制类型转换:通常用于由高类型转换为低类强制类型转换:通常用于由高类型转换为低类型的情况型的情况继续教育学院继续教育学院继续教育学院继续教育学院2.4.1类型自动转换类型自动转换在进行混合运算时,两个不同类型的数据先要转在进行混合运算时,两个不同类型的数据先要转换成同一类型,然后才能进行运算。换成同一类型,然后才能进行运算。自动转换规则为:自动转换规则为:1.单精度浮点型数据(单精度浮点型数据(float)在运算时

51、自动转换成双精)在运算时自动转换成双精度浮点型数据(度浮点型数据(double)。)。2.字符型数据(字符型数据(char)和短整型数据()和短整型数据(short)在运算)在运算时自动转换成整型数据(时自动转换成整型数据(int)。)。3.整型数据(整型数据(int)和无符号型数据()和无符号型数据(unsigned)混合)混合运算时,将整型数据转换成无符号型数据。运算时,将整型数据转换成无符号型数据。4.整型数据(整型数据(int)或无符号型数据()或无符号型数据(unsigned)和长)和长整型数据(整型数据(long)混合运算时,都转换成长整型数据。)混合运算时,都转换成长整型数据。5

52、.整型数据(整型数据(int)、无符号型数据()、无符号型数据(unsigned)、长)、长整型数据(整型数据(long)和浮点型数据混合运算时,都转换)和浮点型数据混合运算时,都转换成浮点型数据。成浮点型数据。继续教育学院继续教育学院继续教育学院继续教育学院类型自动转换规则类型自动转换规则不同类型的数据进行运算时,按纵向箭头由低向高进不同类型的数据进行运算时,按纵向箭头由低向高进行自动转换,横向箭头表示类型必须要转换才能计算行自动转换,横向箭头表示类型必须要转换才能计算(由系统自动转换由系统自动转换)doublelongunsignedintfloatchar, short低低高高必须转换必

53、须转换2024/8/244继续教育学院继续教育学院继续教育学院继续教育学院2.4.2赋值转换赋值转换如果赋值运算符两侧的类型不一致(但都是数值如果赋值运算符两侧的类型不一致(但都是数值型或字符型)时,在赋值过程中会进行类型转换型或字符型)时,在赋值过程中会进行类型转换转换的基本原则是:转换的基本原则是:1.当整型数据赋给浮点型变量时,数值上不发生任何当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。变化,但有效位增加。2.当单、双精度浮点型数据和整型变量混合运算时,当单、双精度浮点型数据和整型变量混合运算时,浮点数的小数部分将被舍弃。浮点数的小数部分将被舍弃。3.将字符型数据赋给

54、整型变量时,由于字符型数据在将字符型数据赋给整型变量时,由于字符型数据在运算时根据其运算时根据其ASCII码值自动转化为整型数据,所以码值自动转化为整型数据,所以将字符型数据的将字符型数据的ASCII码值存储到变量中。码值存储到变量中。4.将有符号的整型数据赋给长整型数据,要进行符号将有符号的整型数据赋给长整型数据,要进行符号扩展。将无符号的整型数据赋给长整型变量时,只扩展。将无符号的整型数据赋给长整型变量时,只需将高位补需将高位补0即可。即可。继续教育学院继续教育学院继续教育学院继续教育学院2.4.3强制类型转换强制类型转换可以利用强制类型转换运算符将一个表达式强制转换成所可以利用强制类型转

55、换运算符将一个表达式强制转换成所需类型。例如:需类型。例如:(int)a; /*表示将变量表示将变量a的类型强制转换为整型的类型强制转换为整型*/(float)(a+b);/*表示将表达式表示将表达式a+b结果的类型强制转换为浮点型结果的类型强制转换为浮点型*/强制类型转换的一般形式如下:强制类型转换的一般形式如下:(强制的类型名强制的类型名)(表达式表达式)注意:注意:(1)表达式应该用括号括起来。例如:表达式应该用括号括起来。例如:(int)(a+b);/*表示将表达式表示将表达式a+b结果的类型强制转换成结果的类型强制转换成int型型*/(int)a+b;/*表示将变量表示将变量a的类型

56、强制转换成的类型强制转换成int型后型后,再进行运算再进行运算*/(2)经强制类型转换后,得到的是一个所需类型的中间变量,经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。原来变量的类型并没有发生任何变化。继续教育学院继续教育学院继续教育学院继续教育学院优先级与结合性小结(附录优先级与结合性小结(附录B)运算符运算符结合性结合性一元:一元:-+-!(类型转换类型转换)从右到左从右到左二元:二元:*/%从左到右从左到右+-从左到右从左到右从左到右从左到右=从左到右从左到右=!=从左到右从左到右&|从左到右从左到右&从左到右从左到右|从左到右从左到右三元:三元:?

57、:从右到左从右到左赋值:赋值:=+=-=*=/=%=&=|=从右到左从右到左逗号:逗号:,从左到右从左到右优先级记忆方法:优先级记忆方法:去掉一个最高的(括号),去掉一个最低的(逗号),去掉一个最高的(括号),去掉一个最低的(逗号),一、二、三、赋值;算术、关系、逻辑。一、二、三、赋值;算术、关系、逻辑。在优先级在优先级相同的情相同的情况下,按况下,按结合性确结合性确定计算顺定计算顺序。序。继续教育学院继续教育学院继续教育学院继续教育学院2.5程序举例程序举例【例例2-4】测试数据类型测试数据类型#include void main( ) printf( * 运行结果运行结果 *n); pri

58、ntf( char:%d字节字节n,sizeof(char); printf( unsigned char:%d字节字节n,sizeof(unsigned char); printf( short:%d字节字节n,sizeof(short); printf( unsigned short:%d字节字节n,sizeof(unsigned short); printf( int:%d字节字节n,sizeof(int); printf( unsigned int:%d字节字节n,sizeof(unsigned int); printf( long:%d字节字节n,sizeof(long); prin

59、tf( unsigned long:%d字节字节n,sizeof(unsigned long); printf( float:%d字节字节n,sizeof(float); printf( double:%d字节字节n,sizeof(double);继续教育学院继续教育学院继续教育学院继续教育学院程序运行程序运行结果:果: * 运行运行结果果 * char:1字字节unsigned char:1字字节 short:2字字节 unsigned short:2字字节 int:4字字节unsigned int:4字字节 long:4字字节unsigned long:4字字节 float:4字字节 do

60、uble:8字字节 【分析分析】类型可用运算符型可用运算符 sizeof 测试。sizeof 的操作数可以是的操作数可以是类型名、型名、变量名和表达式,求量名和表达式,求值结果是字果是字节数。数。程序举例(续)程序举例(续)继续教育学院继续教育学院继续教育学院继续教育学院【例例2-5】类型自型自动转换#include void main( ) char ch=A; short sn=10; float x=10.17,y=20.4; int n=10; unsigned long m=20L; printf( * 运行运行结果果 *n); printf( intchar+short:n); p

61、rintf( ch:%d 字字节n,sizeof(ch); printf( sn:%d 字字节n,sizeof(sn); printf( ch+sn:%d 字字节n,sizeof(ch+sn); printf(n doublefloat+float:n); printf( x:%d 字字节n,sizeof(x); printf( y:%d 字字节n,sizeof(y); printf( x+y:%d 字字节n,sizeof(x+y); printf(n unsigned longint*unsigned long:n); printf( n:%d 字字节n,sizeof(n); printf(

62、 m:%d 字字节n,sizeof(m); printf( n*m:%d 字字节n,sizeof(n*m);继续教育学院继续教育学院继续教育学院继续教育学院程序运行结果:程序运行结果: * 运行结果运行结果 * intchar+short: ch:1 字节字节; sn:2 字节字节 ch+sn:4字节字节 doublefloat+float: x:4字节字节 y:4字节字节 x+y:4字节字节 unsigned longint*unsigned long: n:4字节字节 m:4字节字节 n*m:4 字节字节说明:在说明:在VC+环境中,所有环境中,所有float型数据在运算时都自动转换型数据

63、在运算时都自动转换为为double 型数据。本例中定义型数据。本例中定义了了float型数据并赋值,编译时系型数据并赋值,编译时系统会提示警告信息,把统会提示警告信息,把double 型数据自动截断为型数据自动截断为float型数据。型数据。继续教育学院继续教育学院继续教育学院继续教育学院【例例2-6】分析下面程序的运行结果分析下面程序的运行结果#includevoidmain()intx,y;x=50;y=(x=x-5,x/5);printf(y=%d,y);程序举例(续)程序举例(续)程序运行结果:程序运行结果:y=9【分析分析】因为因为x的初始值为的初始值为50,减,减5后变为后变为45

64、,45除除5为为9赋给赋给y。继续教育学院继续教育学院继续教育学院继续教育学院【例例2-7】分析下面程序的运行分析下面程序的运行结果。果。#include void main( ) int m,n, k; m=15; n=20; k=(-m)+(-n); printf(m=%d,n=%d,k=%dn,m,n,k); m=15, n=20; k=(m-)+(n-); printf(m=%d,n=%d,k=%dn,m,n,k);程序运行程序运行结果:果:m=14,n=19,k=33m=14,n=19,k=35程序举例(续)程序举例(续)继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶定义

65、变量编程进阶定义变量继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶定义变量编程进阶定义变量继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶运算优先级编程进阶运算优先级继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶运算优先级编程进阶运算优先级继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶赋值类型转换编程进阶赋值类型转换继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶强制类型转换编程进阶强制类型转换继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶强制类型转换编程进阶强制类型转换继续教育学院继续教育学院继续教育学院继续教育学院C编程进

66、阶强制类型转换编程进阶强制类型转换继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶取余操作编程进阶取余操作继续教育学院继续教育学院继续教育学院继续教育学院C编程进阶取余操作编程进阶取余操作继续教育学院继续教育学院继续教育学院继续教育学院Look at the example bellow and figuring out the resultC编程进阶取余操作编程进阶取余操作继续教育学院继续教育学院继续教育学院继续教育学院本章学习小结本章学习小结1、不同数据类型的使用范围、不同数据类型的使用范围2、标识符的命名规则、标识符的命名规则3、运算符和表达式,计算表达式的值、运算符和表达式,

67、计算表达式的值4、数据类型转换、数据类型转换5、运算符的优先级和结合性、运算符的优先级和结合性继续教育学院继续教育学院继续教育学院继续教育学院2024/8/2661、选择题:按照、选择题:按照C语言规定的用户标识符命名规则,不能出现在语言规定的用户标识符命名规则,不能出现在标识符中的是标识符中的是 _ 。 A)大写字母)大写字母 B)连接符)连接符 C)数字字符)数字字符 D)下划线)下划线2、选择题:若变量均已正确定义并赋值,以下合法的赋值语句是选择题:若变量均已正确定义并赋值,以下合法的赋值语句是_ 。 A)x=y=5; B)x=n%2.5; C)x+n=I; D)x=5=4+1;3、填空题:、填空题:执行以下程序后的输出结果是执行以下程序后的输出结果是 _ 。main() int a=10; a=(3*5,a+4); printf(“a=%dn”,a);课堂练习课堂练习

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号