《数据类型运算符与表达式幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据类型运算符与表达式幻灯片.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据类型运算符与表达式数据类型运算符与表达式1第1页,共51页,编辑于2022年,星期六本章目标本章目标:uC C语言的基本符号语言的基本符号uC C语言的数据类型语言的数据类型u运算符和表达式运算符和表达式u数据类型转换数据类型转换u自增,自减运算自增,自减运算2第2页,共51页,编辑于2022年,星期六C C语言的基本符号语言的基本符号C语言的基本词汇表有下列几部分:语言的基本词汇表有下列几部分:u数字:数字:10个(个(09)。)。u英文字母:大、小写各英文字母:大、小写各26个(个(AZ,az)。)。u下划线字符下划线字符“_”(用来构成标识符)。(用来构成标识符)。u运算符:是指为表
2、达程序基本操作使用的一些运算符:是指为表达程序基本操作使用的一些符号;符号;u关键字:是指为表达程序功能使用的一些英关键字:是指为表达程序功能使用的一些英文单词或单词缩写。文单词或单词缩写。3第3页,共51页,编辑于2022年,星期六标识符标识符u定义:程序中用来为符号常量、变量、函数、数组、程序中用来为符号常量、变量、函数、数组、类型、文件命名的有效字符序列称为标识符。类型、文件命名的有效字符序列称为标识符。u命名规则:1 1只能由字母、数字和下划线组成。只能由字母、数字和下划线组成。2 2第一个字符必须为字母或下划线。第一个字符必须为字母或下划线。3 3不能使用关键字。不能使用关键字。4
3、4区分大小写字符。区分大小写字符。5 5ANSI C ANSI C 没有规定标识符的长度,各个编译系统允没有规定标识符的长度,各个编译系统允许的标识符的长度(字符个数)不同许的标识符的长度(字符个数)不同。4第4页,共51页,编辑于2022年,星期六常量常量u定义:定义:常量又称为常数常量又称为常数,是在程序运行过程中其是在程序运行过程中其值不能被改变的量,常量的类型是由本身隐含决定值不能被改变的量,常量的类型是由本身隐含决定的。的。u举例:举例:2525、0 0、-13-13为为整型常量整型常量;-55.23-55.23、0.570.57、3.8e33.8e3为为实型常量实型常量;B B,9
4、 9为为字符型常量字符型常量。符号常量符号常量:在在C C语言中,经常使用一个标识符来代表一个语言中,经常使用一个标识符来代表一个常量。也就是给常量命名,称为常量。也就是给常量命名,称为符号常量符号常量。5第5页,共51页,编辑于2022年,星期六例阅读程序。例阅读程序。#definePI3.1415926/*宏定义宏定义*/#includevoidmain()floatr=18.5,area,length;area=PI*r*r;length=2*PI*r;printf(area=%6.2f,length=%6.2f,area,length);符号常量几点说明符号常量几点说明:u程序中用宏定
5、义的方法定义标识符程序中用宏定义的方法定义标识符PI代表常量;代表常量;u符号常量名一般用大写字符;符号常量名一般用大写字符;u符号常量的值在有效范围内不能改变,也不能再被赋值;符号常量的值在有效范围内不能改变,也不能再被赋值;u使用符号常量可以做到使用符号常量可以做到“含义清楚含义清楚”、“一改全改一改全改”,从而提,从而提高程序的可读性,方便程序的修改。高程序的可读性,方便程序的修改。6第6页,共51页,编辑于2022年,星期六变变量量1 1变量的基本概念变量的基本概念 定义:定义:在程序运行过程中其值可以改变的量称为在程序运行过程中其值可以改变的量称为变量变量。变量具有三个属性。变量具有
6、三个属性:u变量名变量名:选择一个标识符,给变量取一个名字称选择一个标识符,给变量取一个名字称为变量名,变量名的命名规则与标识符完全相同。为变量名,变量名的命名规则与标识符完全相同。u变量值变量值:是对应变量名的存储单元所存放的具体的是对应变量名的存储单元所存放的具体的数值。数值。u变量的数据类型变量的数据类型:是指变量可以存储的数据的类型,是指变量可以存储的数据的类型,也就是变量值的数据类型。也就是变量值的数据类型。7第7页,共51页,编辑于2022年,星期六 2 2变量的定义变量的定义u变量的定义变量的定义:程序中指定变量的名字和数据类型程序中指定变量的名字和数据类型 变量的定义在一个函数
7、开头的声明部分变量的定义在一个函数开头的声明部分变量定义的一般形式:变量定义的一般形式:类型说明符类型说明符 变量名变量名1 1,变量名,变量名2 2,变量名,变量名n n;u举例:举例:intk,m,n;/*定义三个整型变量定义三个整型变量*/floatx,y,z;/*定义三个实型变量定义三个实型变量*/charstr;/*定义一个字符型变量定义一个字符型变量*/8第8页,共51页,编辑于2022年,星期六3变量的初始化变量的初始化定义变量的同时,还可以为变量指定初值,称为变量的初定义变量的同时,还可以为变量指定初值,称为变量的初始化。例如程序段:始化。例如程序段:floaty=0.5;ch
8、arstr=a;又如:又如:intj=0,sum=100;该定义变量方式与下面的语句等价:该定义变量方式与下面的语句等价:intj,sum;j=0;sum=100;也可以对被定义变量的一部分赋初值。也可以对被定义变量的一部分赋初值。inti=0,j=0,k,sum;不可以用下面的写法对几个变量同时赋同一个初值。不可以用下面的写法对几个变量同时赋同一个初值。inti=j=k=0;9第9页,共51页,编辑于2022年,星期六几点说明几点说明:程序运行时从变量中取值,实际上是通过变量名找到相应的内存程序运行时从变量中取值,实际上是通过变量名找到相应的内存地址,从其相应的存储单元中读取数据。地址,从其
9、相应的存储单元中读取数据。u程序中变量值却可以动态更换。程序中变量值却可以动态更换。u变量定义后并没有确定的值,或者说值是随机的。可以采用某些方变量定义后并没有确定的值,或者说值是随机的。可以采用某些方法给变量赋值法给变量赋值,当再次给变量赋值时当再次给变量赋值时,新值将替代旧值。新值将替代旧值。u程序中使用的变量,必须程序中使用的变量,必须“先定义,后使用先定义,后使用”。58a12001a1:变量名58:变量值2001 :存储单元地址Int a1=50;a1=58;a1=a1+2;200210第10页,共51页,编辑于2022年,星期六关键字关键字u定义:为了清晰的表达程序的功能,使用了一
10、些英文为了清晰的表达程序的功能,使用了一些英文单词或单词缩写,这些单词称为关键字。单词或单词缩写,这些单词称为关键字。举例:if、int、while 下面几个字虽然不属于关键字,但建议读者把下面几个字虽然不属于关键字,但建议读者把它们看作关键字,不要在程序中随便使用。它们看作关键字,不要在程序中随便使用。defineundefincludeifdefifndefendif 11第11页,共51页,编辑于2022年,星期六C语言的数据类型语言的数据类型uC C语言中各种数据类型具有不同的存储长度、取语言中各种数据类型具有不同的存储长度、取值范围及允许的操作。值范围及允许的操作。uC C语言将能处
11、理的数据分成两大类型,语言将能处理的数据分成两大类型,基本类型基本类型和和构造类型构造类型,构造类型的数据是由若干个基本类型,构造类型的数据是由若干个基本类型按一定的结构组合而成的。按一定的结构组合而成的。u语言规定:语言规定:在程序中用到的数据,都必须指在程序中用到的数据,都必须指定其数据类型。定其数据类型。12第12页,共51页,编辑于2022年,星期六整型数据整型数据1 1整型变量整型变量(1)(1)有符号整型变量的分类有符号整型变量的分类 有符号整型变量按数值的范围分为三种:有符号整型变量按数值的范围分为三种:1 1 基本整型:以基本整型:以int作为类型说明符作为类型说明符2短整型:
12、以短整型:以shortint或或short作为类型说明符作为类型说明符3长整型:以长整型:以longint或或long作为类型说明符作为类型说明符u整型变量一般在内存中占的字节数与所选择的系统整型变量一般在内存中占的字节数与所选择的系统有关,规定有关,规定long型整数不短于型整数不短于int型,型,short型整数不型整数不长于长于int型。型。13第13页,共51页,编辑于2022年,星期六(2)(2)无符号整型变量的分类无符号整型变量的分类定义:u用来处理一些不带符号的整型变量,将存储单元中用来处理一些不带符号的整型变量,将存储单元中的全部二进制位都用来存放数,取消符号位,称为的全部二进
13、制位都用来存放数,取消符号位,称为无符号整型无符号整型。u无符号整型变量按数值的取值范围不同也分为三种:无符号整型变量按数值的取值范围不同也分为三种:1、无符号基本整型:以、无符号基本整型:以unsignedint作为类型说明符作为类型说明符2、无符号短整型:以、无符号短整型:以unsignedshortint或或unsignedshort作为类型说明符作为类型说明符3、无符号长整型:以、无符号长整型:以unsignedlongint或或unsignedlong作作为类型说明符为类型说明符14第14页,共51页,编辑于2022年,星期六整型数据在内存中的存储形式整型数据在内存中的存储形式011
14、11111111111111111111111111111符号位数据位=32767=65535有符号整型无符号整型15第15页,共51页,编辑于2022年,星期六2整型常量整型常量整型常量的表达形式整型常量就是整常数。有以下三种表达形式:整型常量就是整常数。有以下三种表达形式:1 1 十进制整数十进制整数 例如:例如:567567、0 0、-89-89。2 2 八进制数八进制数 特征是以数字符特征是以数字符0 0开头,并由数字符开头,并由数字符0707组成的字符序列,例如组成的字符序列,例如01250125,011011;3 3 十六进制数十六进制数 特征是以特征是以0 x0 x或或0X0X开
15、头,并由数字符开头,并由数字符0909,和字符,和字符afaf或者字符或者字符AFAF组成的数字符序列。组成的数字符序列。0 x2ab,0X2AB0 x2ab,0X2AB。16第16页,共51页,编辑于2022年,星期六整型常量的类型整型常量的类型是由其本身隐含决定的整型常量的类型是由其本身隐含决定的例如:例如:3276732767的类型是的类型是intint,3276932769类型是类型是longlong一个整常量后面加一个字母一个整常量后面加一个字母L(或小写(或小写l),则明确指定该常量是则明确指定该常量是longint型的,例如型的,例如0L,123L,234l等。等。17第17页,
16、共51页,编辑于2022年,星期六实型数据实型数据1、实型变量实型变量(1)实型变量的分类实型变量的分类实型变量按数值的范围分为三种:实型变量按数值的范围分为三种:1 1 单精度实型:以单精度实型:以float float 作为类型说明符;作为类型说明符;2 2 双精度实型:以双精度实型:以double double 作为类型说明符;作为类型说明符;3 3 长双精度实型:以长双精度实型:以long double long double 作为类型说明符;作为类型说明符;类型类型 说明符说明符 字节数字节数 比特数比特数 有效数字有效数字 数值范围数值范围单精度实型单精度实型 float 4 32
17、 6-7 10float 4 32 6-7 10-38-38 10 103838双精度实型双精度实型 double 8 64 1516 10double 8 64 1516 10-308-308 10 10308308长双精度实型长双精度实型 long double 16 128 1819 10long double 16 128 1819 10-4932-4932 10 104932493218第18页,共51页,编辑于2022年,星期六(2)实型变量的定义对每一个实型变量,都应在使用前进行定义,例如:对每一个实型变量,都应在使用前进行定义,例如:floatx,y;/*定义定义x,y为单精度
18、实数为单精度实数*/doublez;/*定义定义z为双精度实数为双精度实数*/2 2、实型常量、实型常量实型常量的表达形式实型常量的表达形式 u十进制小数形式十进制小数形式 0.1250.125、.125.125、-0.125-0.125、-125.0-125.0、1.251.25;u指数形式指数形式 一般格式是一般格式是 实数(整数)实数(整数)+e(+e(或或E)+E)+整数整数例如:例如:123.456123.456的指数形式是的指数形式是1.23456e21.23456e2、1.23456E2 1.23456E2、12.3456e1 12.3456e1、0.0123456e40.012
19、3456e4、.123456e3.123456e3、12345.6e-212345.6e-2等。等。而而e2e2、1.23e3.5 1.23e3.5、e e、12345E12345E 等都是不合法形式。等都是不合法形式。19第19页,共51页,编辑于2022年,星期六字符型数据字符型数据1 1、字符常量、字符常量u定义定义:字符常量是用单撇号括起来的一个字符字符常量是用单撇号括起来的一个字符。举例:举例:a a,A A,$,5 5等都是字等都是字符常量。符常量。u转义字符:还有一些特殊的字符,转义字符:还有一些特殊的字符,C C语言约定用语言约定用 “”开头的字符序列作为标记,这类字符统称为开
20、头的字符序列作为标记,这类字符统称为“转义字符转义字符”。举例:转义字符举例:转义字符nn中的中的“n n”不代表字母不代表字母n n,该转义字符表示在输出过程中将当前位置移到下一该转义字符表示在输出过程中将当前位置移到下一行的开头,简称换行;行的开头,简称换行;20第20页,共51页,编辑于2022年,星期六2字符变量字符变量u定义定义:用来存放一个字符常量的变量称为字符变量。用来存放一个字符常量的变量称为字符变量。例如程序段:例如程序段:charc1,c2;/*定义变量定义变量c1,c2为字符变量为字符变量*/c1=a;c2=b;/*将字符常量存放到字符变量中将字符常量存放到字符变量中*/
21、几点说明:几点说明:u字符常量或字符变量在内存中都只占有一个字节。字符常量或字符变量在内存中都只占有一个字节。u字符在程序中是以字符在程序中是以ASCII码的形式表示的,在内存中是以二进制的码的形式表示的,在内存中是以二进制的形式存储的,它与以整数的存储形式相类似。形式存储的,它与以整数的存储形式相类似。u在在C程序中,字符型数可以当作整型数进行处理,并且可以和整型数混程序中,字符型数可以当作整型数进行处理,并且可以和整型数混合操作和处理。合操作和处理。21第21页,共51页,编辑于2022年,星期六阅读程序。阅读程序。#includevoidmain()charch1;intch2;ch1=
22、A;ch2=B;printf(n%d,%dn,ch1,ch2);ch1=97;ch2=98;ch1=ch1+6;ch2=98+6;printf(%c,%cn,ch1,ch2);printf(%d,%d,ch1,ch2);运行结果:65,66g,h103,10422第22页,共51页,编辑于2022年,星期六23第23页,共51页,编辑于2022年,星期六字符串常量字符串常量定义定义:字符串常量是括在一对双撇号之间的字符序列(其中也可以包字符串常量是括在一对双撇号之间的字符序列(其中也可以包括转义字符)括转义字符)举例:举例:“C language C language”,“s s”,“$35.
23、56$35.56”,“tChinsbantChinsban”。字符串常量中的字符依次存储在内存中一块连续的区域内,并把空字符串常量中的字符依次存储在内存中一块连续的区域内,并把空字符字符00(ASCII (ASCII 值为值为0)0)自动地附加到字符串的尾部作为字符串自动地附加到字符串的尾部作为字符串的结束标志。的结束标志。例如:字符串例如:字符串HELLO HELLO 字符个数为字符个数为5 5,所占内存空间应为,所占内存空间应为6 6个字节。个字节。HELLO024第24页,共51页,编辑于2022年,星期六字符常量和字符串常量的区别字符常量和字符串常量的区别:在程序中,用字符常量或字符串
24、常量表示单个字在程序中,用字符常量或字符串常量表示单个字符,例如符,例如 a a,或,或“a a”,两者的区别如下:,两者的区别如下:1 1、字符串、字符串“a a”在内存中占在内存中占2 2个字节,而字符个字节,而字符a a 在内存中占在内存中占1 1个字节个字节 字符串字符串a a 字符字符aa2 2、不能将字符串赋给一个字符变量、不能将字符串赋给一个字符变量例如程序段:例如程序段:char ch1,ch2;char ch1,ch2;ch1=a;/*ch1=a;/*正确正确*/ch2=a;/*ch2=a;/*错误错误*/a0a25第25页,共51页,编辑于2022年,星期六运算符运算符和表
25、达式和表达式u运算符定义运算符定义:描述各种操作的符号称为运算符。描述各种操作的符号称为运算符。u表达式定义表达式定义:用运算符将被操作对象连接起来,符合用运算符将被操作对象连接起来,符合C C语言语法的式子语言语法的式子称为表达式。称为表达式。u表达式特点:表达式特点:(1)(1)、常量和变量都是表达式、常量和变量都是表达式(2)(2)、运算符的类型对应表达式的类型,例如:算术运算符对应、运算符的类型对应表达式的类型,例如:算术运算符对应算术表达式。算术表达式。(3)(3)、每一个表达式都有自己的值。、每一个表达式都有自己的值。26第26页,共51页,编辑于2022年,星期六运算符属性:运算
26、符属性:(1)优先级 当若干个运算符同时出现在表达式中时,当若干个运算符同时出现在表达式中时,优先级优先级规定了运算的先后次序规定了运算的先后次序。由于。由于C C语言运算符种类很多,语言运算符种类很多,所以优先级有所以优先级有1515级之多。级之多。C C语言把圆括号作为运算符,规定它的优先级最高,语言把圆括号作为运算符,规定它的优先级最高,规定为规定为1515级,从而保证优先运算圆括号内的式子,逗级,从而保证优先运算圆括号内的式子,逗号运算符的级别最低,规定为号运算符的级别最低,规定为1 1级。级。27第27页,共51页,编辑于2022年,星期六(2)结合性 当若干个具有相同优先级的运算符
27、相邻出现在表当若干个具有相同优先级的运算符相邻出现在表达式中时,达式中时,结合方向规定了运算的先后次序结合方向规定了运算的先后次序。分为。分为“从左到右从左到右”和和“从右到左从右到左”两个结合方向。两个结合方向。一般来说,大多数运算符的结合方向一般来说,大多数运算符的结合方向”从左到右从左到右”,只有单目运算符、赋值运算符和条件运算符的结只有单目运算符、赋值运算符和条件运算符的结合方向合方向”从右到左从右到左”,这里单目运算符是指作用于一,这里单目运算符是指作用于一个操作对象的运算符。个操作对象的运算符。28第28页,共51页,编辑于2022年,星期六算术运算符和算术表达式算术运算符和算术表
28、达式算术运算符:算术运算符:+,-,*,/,%几点说明:几点说明:1 1、+、-、*与数学中的意义相同与数学中的意义相同2 2、在除法运算中,两个整数相除的结果为整数,一、在除法运算中,两个整数相除的结果为整数,一般采用般采用”向零取整向零取整”的规则,取整时向零靠拢。例的规则,取整时向零靠拢。例如如9/29/2运算结果为运算结果为4 4;-9/2-9/2运算结果为运算结果为-4-4。29第29页,共51页,编辑于2022年,星期六 3 3、%是取余运算符或称模运算符,运算结果是两是取余运算符或称模运算符,运算结果是两个整数相除后的余数(整数)。个整数相除后的余数(整数)。并且规定运算结果并且
29、规定运算结果的正负符号与被除数的符号一致,如果被除数小于的正负符号与被除数的符号一致,如果被除数小于除数,运算结果等于被除数。除数,运算结果等于被除数。9%2 9%2 运算结果为运算结果为1 1 2%9 2%9 的运算结果为的运算结果为2 2-9%2 -9%2 的运算结果为的运算结果为-1-1 9%-2 9%-2 的运算结果为的运算结果为1 130第30页,共51页,编辑于2022年,星期六赋值运算符和赋值表达式赋值运算符和赋值表达式赋值运算符是符号赋值运算符是符号 =作用:作用:将一个数据赋给一个变量。将一个数据赋给一个变量。由赋值运算符由赋值运算符将一个变量和一个表达式连接起来的式子称为赋
30、值表将一个变量和一个表达式连接起来的式子称为赋值表达式。达式。一般形式:一般形式:变量变量=表达式表达式作用:把赋值运算符右边表达式的值赋给赋值运作用:把赋值运算符右边表达式的值赋给赋值运算符左边的变量算符左边的变量 31第31页,共51页,编辑于2022年,星期六几点说明几点说明:1 1、赋值运算后,变量原来的值被表达式的值替换、赋值运算后,变量原来的值被表达式的值替换2 2、赋值表达式的值也就是赋值运算符左边变量得、赋值表达式的值也就是赋值运算符左边变量得到的值,如果右边表达式的值的类型与左边变量的类到的值,如果右边表达式的值的类型与左边变量的类型不一致,以左边变量的类型为基准。型不一致,
31、以左边变量的类型为基准。3 3、赋值运算符的优先级很低,仅高于逗号运算符。、赋值运算符的优先级很低,仅高于逗号运算符。结合方向为结合方向为“从右向左从右向左”。例:例:int a=2,b=5int a=2,b=5计算表达式计算表达式 x=y=a+bx=y=a+b的值的值32第32页,共51页,编辑于2022年,星期六复合赋值运算符复合赋值运算符复合赋值运算符复合赋值运算符:+=-=*=/=%=(与算术运算有关)(与算术运算有关)已知:已知:inta,b=5,c=4计算表达式计算表达式a+=a-=a=b+c的值。的值。1.a+=(a-=(a=(b+c)2.a=a+(a=a-(a=(b+c)3.a
32、=a+(a=a-(a=9);4.a=a+(a=a-9);5.a=a+0;a=0+0;a=0;最后表达式的值为最后表达式的值为0,变量,变量a a 的值也为的值也为0 0。33第33页,共51页,编辑于2022年,星期六数据类型转换数据类型转换 整型、实型和字符型数据可以进行混合运整型、实型和字符型数据可以进行混合运算,在进行运算时,一般类型的数据先转换成算,在进行运算时,一般类型的数据先转换成标准类型的数据,不同类型的数据要先转换成标准类型的数据,不同类型的数据要先转换成相同类型的数据。转换规则如下:相同类型的数据。转换规则如下:不同数据类型的数据间的混合运算不同数据类型的数据间的混合运算不同
33、数据类型的数据间的混合运算不同数据类型的数据间的混合运算34第34页,共51页,编辑于2022年,星期六1 1、在运算过程中,每个数据要转换为标准类型,在运算过程中,每个数据要转换为标准类型,以提高运算精度,例如:如果一个数据是以提高运算精度,例如:如果一个数据是float型,型,首先应转换首先应转换double型;如果一个数据是型;如果一个数据是short型或型或char型,首先应转换为型,首先应转换为int型。型。2、通过第一步转换后,如果参与运算的数据类、通过第一步转换后,如果参与运算的数据类型仍不相同,不同类型的数据要先转换成同一类型型仍不相同,不同类型的数据要先转换成同一类型的数据,
34、然后进行运算。的数据,然后进行运算。转换的规则是,转换的规则是,“由低向高由低向高”,也就是说一个,也就是说一个表达式的值的类型是其中各个参与运算的数据中级表达式的值的类型是其中各个参与运算的数据中级别最高的类型。别最高的类型。35第35页,共51页,编辑于2022年,星期六u自动转换自动转换 所谓所谓“自动转换自动转换”就是系统根据规则自动将就是系统根据规则自动将两个不同数据类型两个不同数据类型的运算对象转换成同一种数的运算对象转换成同一种数据类型的过程。据类型的过程。36第36页,共51页,编辑于2022年,星期六u强制转换强制转换在在C语语言言中中,允允许许程程序序员员根根据据自自己己的
35、的意意愿愿将将一一种种数据类型强制转换成另一种数据类型。数据类型强制转换成另一种数据类型。强制转换的格式为:强制转换的格式为:(数据类型名数据类型名)操作对象操作对象 注注意意,强强制制转转换换并并不不改改变变操操作作对对象象的的数数据据类类型型和和数数值值。例例如如,(int)f的的确确切切含含义义是是将将f转转换换成成为为整整型型值值参参与与运运算算,而而f本本身身的的数数据据类类型型和和数数值值都都没没有有任任何何改变。改变。37第37页,共51页,编辑于2022年,星期六u赋值表达式的类型转换赋值表达式的类型转换当当赋赋值值运运算算符符左左边边的的变变量量与与赋赋值值运运算算符符右右边
36、边的的表表达达式式的的数数据据类类型型不不相相同同时时,系系统统负负责责将将右右边边的的数数据据类类型型转转换成左边的数据类型。换成左边的数据类型。会会有有两两种种情情况况产产生生,一一种种是是转转换换以以后后会会丢丢失失数数据据,另另一一种种是是转转换换以以后后不不会会丢丢失失数数据据。这这与与赋赋值值号号两两边边的的表表达式的数据类型所占的字节数及存储表示方式有关。达式的数据类型所占的字节数及存储表示方式有关。38第38页,共51页,编辑于2022年,星期六intintunsigned intunsigned intlong intlong intdoubledoublefloatfloa
37、tchar,shortchar,short转换规则转换规则转换规则转换规则存储长度较短存储长度较短存储长度较长存储长度较长总趋势:总趋势:算术表达式中的运算转换小结算术表达式中的运算转换小结39第39页,共51页,编辑于2022年,星期六例:例:int x=2;float y=1.6;char c=Aint x=2;float y=1.6;char c=A;c+x*y=c+x*y=?65(int)65(int)2(int)2(int)1.6(double)1.6(double)3.2(double)3.2(double)68.2(double)68.2(double)40第40页,共51页,编
38、辑于2022年,星期六例例:#includestdio.hvoidmain()intc;/*charc;*/c=B;printf(c=%c,c+a-A);运行结果:运行结果:c=b41第41页,共51页,编辑于2022年,星期六例例:#includestdio.hvoidmain()charc;inti=0 x3241;printf(i=%cn,i);c=i;printf(c=%dn,c);printf(i=%dn,i);运行结果运行结果i=Ac=65i=1286542第42页,共51页,编辑于2022年,星期六自增,自减运算自增,自减运算一般形式:一般形式:变量变量 或或 变量变量 变量变量
39、 或或 变量变量作用:作用:使变量的值增使变量的值增1 1或减或减1 1,其中变量是指算,其中变量是指算术类型的变量。术类型的变量。43第43页,共51页,编辑于2022年,星期六设设x x为算术类型的变量:为算术类型的变量:x+x+和和+x+x的相同之处单独作为一个表达式语句的相同之处单独作为一个表达式语句被使用时无论执行了哪一种表达式,执行结束后被使用时无论执行了哪一种表达式,执行结束后x x的值都增加的值都增加1 1;当当x+x+和和+x+x出现在其他表达式中时,也就是说出现在其他表达式中时,也就是说作为作为其他表达式的一部分时,表达式的结果是不同其他表达式的一部分时,表达式的结果是不同
40、的。的。44第44页,共51页,编辑于2022年,星期六前前缀缀表表示示法法是是先先将将i值值增增/减减1,再再在在表表达达式式中中使使用用;而而后后缀缀表表示示法法是是先先在在表表达达式式中中使使用用i的的值值,再再将将i值增值增/减减1。例如:例如:i=3;i=3;j=i+;j=+i;结果结果:j的内容为的内容为3j的内容为的内容为4i的内容为的内容为4i的内容为的内容为445第45页,共51页,编辑于2022年,星期六阅读程序阅读程序main()inti=1,j=1,m;m=i+;/*等价于:等价于:m=i;i+=1;*/printf(i=%d,m=%dn,i,m);m=+j;/*等价于
41、:等价于:j+=1;m=j;*/printf(j=%d,m=%dn,j,m);printf(i=%d,j=%dn,i-,-j);运行结果:i=2,m=1 j=2,m=2 i=2,j=1 46第46页,共51页,编辑于2022年,星期六几点说明:几点说明:1 1、自增运算符和自减运算符自增运算符和自减运算符只能用于只能用于变量,不能用于常量和表达式;变量,不能用于常量和表达式;例如:例如:+5,(,(a+b+3)+是错误的应用是错误的应用2 2、自增运算符、自增运算符+和自减运算符和自减运算符的结合方向的结合方向是是“从右向左从右向左”,优先级为,优先级为1414,仅次于圆括号。,仅次于圆括号。
42、3 3、自增运算和自减运算实质上是算术运算和变、自增运算和自减运算实质上是算术运算和变量赋值运算两种运算的结合。量赋值运算两种运算的结合。47第47页,共51页,编辑于2022年,星期六例阅读程序例阅读程序main()inti=1;printf(%d,-i+);printf(i=%d,i);运行结果:-1,i=248第48页,共51页,编辑于2022年,星期六逗号运算符逗号运算符表达式表达式1 1,表达式,表达式2 2逗号表达式的求值过程是:先求解表达式逗号表达式的求值过程是:先求解表达式1 1,再求解表达式再求解表达式2 2,并将表达式,并将表达式2 2的值作为逗号表达的值作为逗号表达式的值
43、。式的值。例如例如:5,6的值是的值是6z=(y=3,x*y)与与z=x*(y=3)是等价的是等价的 逗号运算符一般用于循环逗号运算符一般用于循环for语句,不提倡使语句,不提倡使用在其它的表达式中。用在其它的表达式中。49第49页,共51页,编辑于2022年,星期六例例:(x=2*5,x*4),x+15结果结果:25x=2*5,x*4,x+15结果结果?intj=6;x=(x=j+1,x+2,x+3)结果结果:x的值为的值为?50第50页,共51页,编辑于2022年,星期六本章总结本章总结:1.C语言的常用基本符号语言的常用基本符号2.C语言的数据类型语言的数据类型3.运算符和表达式运算符和表达式4.数据类型转换数据类型转换5.自增,自减运算自增,自减运算51第51页,共51页,编辑于2022年,星期六