第3章_数据类型运算符与表达式ok_第1页
第3章_数据类型运算符与表达式ok_第2页
第3章_数据类型运算符与表达式ok_第3页
第3章_数据类型运算符与表达式ok_第4页
第3章_数据类型运算符与表达式ok_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 三 章数据类型、运算符与表达式数据类型、运算符与表达式 李艳坤李艳坤2一、一、C C的数据类型的数据类型二、常量与变量二、常量与变量三、基本数据类型三、基本数据类型四、运算符与表达式四、运算符与表达式主要内容主要内容3数组类型数组类型结构体类型结构体类型共用体类型共用体类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型整型整型字符型字符型实型实型( (浮点型浮点型) )枚举类型枚举类型单精度型单精度型双精度型双精度型程序中用到的程序中用到的所有数据都必所有数据都必须指定其数据须指定其数据类型类型. .一、一、C C的数据类型的数据类型数据类型决定:数据类型决定

2、:1. 1. 数据占内存字节数数据占内存字节数2. 2. 数据取值范围数据取值范围3. 3. 可进行的操作可进行的操作?4( (一一) ) 常常 量量( (二二) ) 变变 量量二、常量与变量二、常量与变量基本类型基本类型构造类型构造类型指针类型指针类型5概概 念念在程序运行过程中,其值不能被改变的量。在程序运行过程中,其值不能被改变的量。 字符串常量字符串常量( (一一) ) 常量常量字面常量(字面常量(直接常量直接常量):): 1212、-4-44.64.6、a a、Hello! Hello! 如果程序中多次用到同一个字面如果程序中多次用到同一个字面常量,如何做到常量,如何做到“一改全改一

3、改全改”?6【例例】求两个圆的面积求两个圆的面积#include void main()float s1,s2,r1,r2; r1=10; r2=20; s1=3.1415926*r1*r1; s2=3.1415926*r2*r2;printf(%f,%f, %f n,s1,s2,s3);用一个用一个标识符标识符( (符号符号) )代表代表一个常量一个常量符号常量符号常量7符号常符号常量量 的的定义定义格式:格式:# #define define 常量名常量名 字面常量字面常量举例:举例:#define #define PRICEPRICE 50000 50000 #define #defin

4、e PI PI 3.1415926 3.1415926 #define #define C1 C1 a a常量名用大写常量名用大写注意:符号常量的定义注意:符号常量的定义放在函数外面。放在函数外面。( (一一) ) 常量:符号常量常量:符号常量8【例例2 2】求两个圆的面积求两个圆的面积#define PI 3.1415926#include #define PI 3.1415926void main()float s1,s2,r1,r2; r1=10; r2=20; s1= PI *r1*r1; s2= PI *r2*r2;printf(%f,%f, %f n,s1,s2,s3);符号常量在

5、函数外定义符号常量在函数外定义二选一二选一9【例例2 2】求商品总价求商品总价#define PRICE 2000 /*定义符号常量定义符号常量*/#include void main( )int sum1,sum2;sum1=PRICE*30; sum2=PRICE*50; sum3=PRICE*80;printf(“sum1=%d,sum2 =%d,sum3= n”,sum1, sum2,sum3); 哪是字面常量,哪是字面常量,哪是符号常量?哪是符号常量?商品涨价了怎么办?商品涨价了怎么办?10#include #define PRICE 2000void main( )int sum1

6、,sum2,sum3;sum1=PRICE*30; sum2=PRICE*50; sum3=PRICE*80; PRICE=2010; printf(%dn,sum);【例例2 2】求商品总价求商品总价程序有问题?程序有问题?【注意注意】符号常量的值在其符号常量的值在其作作用域用域内不能改变;也内不能改变;也不能再被赋值不能再被赋值11( (一一) ) 常量:符号常量常量:符号常量意义意义1 1、含义清楚。、含义清楚。2 2、在需要改变一个常量时,能够做到、在需要改变一个常量时,能够做到“一改全改一改全改”。 ?【思考题思考题】小圆的半径为小圆的半径为10cm10cm,中圆的半径为,中圆的半径

7、为20cm20cm,大圆的半径为大圆的半径为30cm30cm,圆周率为,圆周率为3.143.14,求三个圆的面积求三个圆的面积s1,s2,s3 s1,s2,s3 。要求要求: :使用符号常量表示圆周率。使用符号常量表示圆周率。12【参考答案参考答案】求三个圆的面积求三个圆的面积#define PI 3.1415926 /*定义符号常量定义符号常量*/#include void main( ) float s1,s2,s3;s1=PI*10*10; s2=PI*20*20; s3=PI*30*30;printf(%f,%f,%fn,s1,s2, s3);注意注意: :写法写法(s1、s2、平方、

8、立方)平方、立方)13概概 念念其值可以其值可以改变的量称为变量。改变的量称为变量。(二)变量(二)变量变量名变量名: 变量命名遵循变量命名遵循标识符标识符命名规则;命名规则;变量值变量值: 通过变量名来引用变量的值。通过变量名来引用变量的值。实实 质质内存中具有特定属性的一个内存中具有特定属性的一个存储单元存储单元;代表一个代表一个内存地址内存地址,用以存放数据。用以存放数据。要素要素变量名变量名内存地址内存地址变量的值变量的值内存与存储单元、内存地址内存与存储单元、内存地址功能:功能:用来暂时存储程序和数据的地方;用来暂时存储程序和数据的地方;所有程序的运行都是在内存中进行的。所有程序的运

9、行都是在内存中进行的。C程序中数据的读取通过内存进行的程序中数据的读取通过内存进行的2001200220032000存储单元存储单元存储单存储单元编号元编号000000000000000000000000000010008int a=8;15标识符:标识符:identifieridentifier1 1、组成:、组成:只能由字母只能由字母( (英文大小写字母英文大小写字母5252) )、数字(、数字(0-0-9 9)、下划线()、下划线( _ _ )组成)组成,且第一个且第一个字符字符必须为字母必须为字母或下划线;或下划线;不允许同时定义两个完全相同的标识符。不允许同时定义两个完全相同的标识符

10、。2 2、长度:、长度:建议变量名长度不要超过建议变量名长度不要超过8 8个字符。个字符。3 3、标识符命名的良好习惯标识符命名的良好习惯见名知意见名知意name、age、sum、max、min 【注意注意】在在C C语言中,语言中,大小写字母不等效大小写字母不等效。如:如:aAaA,IiIi,SumsumSumsum,两个不同的标识符,两个不同的标识符16下列标识符是否合法,为什么?下列标识符是否合法,为什么?sum a1 s_name ABCde43xyw8 sum a1 s_name ABCde43xyw8 _22A lea_1_22A lea_1class_1 _class_1#ss

11、a.b.c 1a8bc #ss a.b.c 1a8bc 1_class#xy a*b 8Tea M.J.YORKM.J.YORK $_238$_238合法合法不合法不合法思考思考17程序中用到的所有变量:程序中用到的所有变量:1 1、定义;、定义;2 2、赋值;、赋值;3 3、按需使用。、按需使用。高度注意的问题:高度注意的问题:求圆的面积;求累积和、阶乘;求圆的面积;求累积和、阶乘;求求100个数中的最值、平均数个数中的最值、平均数18定义变量定义变量格式:数据类型格式:数据类型 变量名变量名 , ,变量名变量名2 2,;int a1,a2;float x1,x2;double y1,y2;

12、char c1,c2;习惯上,变量名用小写习惯上,变量名用小写字母字母,常量名用大写。常量名用大写。19方式:方式:1 1、定义变量的同时赋初值(、定义变量的同时赋初值(变量初始化变量初始化)。)。 格式:格式: 数据类型数据类型 变量名变量名=初值初值,变量名变量名2=2=初值初值2.;2.;2 2、通过一个赋值语句给变量赋初值。、通过一个赋值语句给变量赋初值。 格式格式 :变量名变量名= =初值初值; ; 变量赋初值变量赋初值出现在函数体出现在函数体的声明部分的声明部分出现在函数体出现在函数体的执行部分的执行部分int a=5, b=3;int a,b;a=5; b=3;201 1、变量必

13、须、变量必须“先定义,后使用先定义,后使用”。2 2、C C语言的关键字不能用作变量名(语言的关键字不能用作变量名(P365P365)3 3、C C语言对英文字母的大小写敏感语言对英文字母的大小写敏感4 4、定义变量时,给几个变量赋相同的初值,、定义变量时,给几个变量赋相同的初值, 关于变量以及变量赋初值的几点说明:关于变量以及变量赋初值的几点说明:int a=b=c=3; int a=b=c=3; int a,b,c; a=b=c=3; int a,b,c; a=b=c=3; int a=3,b=3,c=3;int a=3,b=3,c=3;int a,b,c; a=3;b=3;c=3;int

14、 a,b,c; a=3;b=3;c=3; 21【举例举例】本程序中有本程序中有几处错误?几处错误?include void main() int student,age; int if=adrress=1; float score=90.5; stadent=2; Age=20; printf(“ %d %d %d %f,if,student,age,score);undeclared identifier22( (一一) ) 整数类型整数类型( (二二) ) 实数类型实数类型( (三三) ) 字符类型字符类型( (四四) ) 不同类型数据间的转换不同类型数据间的转换三、基本数据类型三、基本数

15、据类型 * * 八进制的数码范围为八进制的数码范围为0707; 018 018 * * 十六进制的数码除了数字十六进制的数码除了数字0909外外, , 还使用英文字母还使用英文字母a f (a f (或或A F)A F)表示表示10151015。 如:如:0 x1e 0 x1e 1 1、整型常量:、整型常量: (1) (1) 十进制形式十进制形式: :与数学上的整数表示相同;与数学上的整数表示相同; 例如例如: 12, -100, 0: 12, -100, 0 (2) (2) 八进制形式八进制形式: : 在数码前在数码前加数字加数字0 0; 012012=1=1* *8 81 1+2+2* *

16、8 80 0=10(=10(十进制)十进制) (3) (3) 十六进制形式十六进制形式: :在数码前在数码前加加0X0X(数字数字0和字母和字母X)。)。 如如: 0 x12=1: 0 x12=1* *16161 1+2+2* *16160 0=18(=18(十进制)十进制) 2、整型变量的分类:、整型变量的分类:intint、shortshort、longlong;unsignedunsigned、signedsigned;根据数据所占的根据数据所占的存储长度不同存储长度不同:253 3、整型变量的值域:、整型变量的值域:Visual C系统类型类型所占字节数所占字节数 数值范围数值范围in

17、t int 型型4 4个字节个字节 -2147483648-214748364821474836472147483647short intshort int2 2个字节个字节-32768-327683276732767long intlong int4 4个字节个字节 -2147483648-214748364821474836472147483647一个整型常量,可以赋给能容纳下其值一个整型常量,可以赋给能容纳下其值的整型变量的整型变量264、整数类型整数类型溢出举例溢出举例#include void main()int a,b;a= 2147483647;b=a+1;printf(%dn%

18、d,a,b);Visual cVisual c 编译系统编译系统 ?(P44-例例3.3)27表示方法表示方法十进制小数形式十进制小数形式: 123. 34,-0.0045, 0.0指数形式指数形式: E(e) 如如0.23e2 ,-0.45e-3, 3.0+5( (二二) )实数类型实数类型常量常量 小数点不能单独出现:小数点不能单独出现: 0.0. .0 .0 . . e e或或E E的两边必须有数,且的两边必须有数,且其后面指数必为整数其后面指数必为整数: 如:如: 6E0.2 6E0.2 e5 e5 在在e e或或E E的前后以及与数字之间不得插入空格的前后以及与数字之间不得插入空格

19、0.8103e 2 0.8103e 2 注意注意28分类及取分类及取值范围值范围 类型类型 字节数字节数 有效数字有效数字 数值范围数值范围 float 4 67 10-371038 double 4 1516 10-30710308long double 8/16 1819 10-4931104932( (二二) ) 实数类型实数类型变量变量Visual CVisual C有关浮点型的数据表有关浮点型的数据表说明说明一个实型常量,可赋给一个实型变量(一个实型常量,可赋给一个实型变量(float、double、或或long double )。C C编译系统将浮点型常量作为双精度处理,编译系统将

20、浮点型常量作为双精度处理,29( (二二) ) 实数类型实数类型变量变量定义定义 folat x,y; double z1; long double z2; 【注意注意】在计算机内,可以精确地存放一个整数,但在计算机内,可以精确地存放一个整数,但是实数往往存在误差。是实数往往存在误差。【判断判断】在在c c程序中,整数和实数只要在允许范围内都程序中,整数和实数只要在允许范围内都能准确无误的表示能准确无误的表示. .30表示方法表示方法用单引号括起来的一个字符用单引号括起来的一个字符. a A 9 = ? (三)(三) 字符类型字符类型常量常量转义字符转义字符将将“”后面的字符转换成另外的意义,

21、后面的字符转换成另外的意义,即是一种控制符号即是一种控制符号.【注意注意】 (1)(1)数字数字0 0、字符、字符00的区别;的区别; (2)(2)大小写字母对应的大小写字母对应的ASCIIASCII值相差值相差3232 (AA:6565,aa:9797)31转义字符转义字符 字符形式字符形式 含义含义 n n 换行换行, ,从当前位置移到下一行开头从当前位置移到下一行开头 t t 水平制表水平制表( (跳到下一个跳到下一个tabtab位置位置) ) b b 退格退格, ,将当前位置移到前一列将当前位置移到前一列 r r 回车回车, ,将当前位置移到本行开头将当前位置移到本行开头 单撇号字符单

22、撇号字符 反斜杠字符反斜杠字符 双撇号字符双撇号字符 ddd 13ddd 13位位8 8进制数所代表的字符进制数所代表的字符 xhh 12xhh 12位位1616进制数所代表的字符进制数所代表的字符 32#include void main() printf(abcbdnxyz); printf(rlmntopqn);abdlmn opq#include void main() printf(x4Fx4Bx21n); printf(x15 xABn);! ?转义字符的使用转义字符的使用实际中不会这样使用/* 等价于等价于printf(OK!n); */33字符类型字符类型变量变量存储方式存储方

23、式以以ASCII码存储码存储,占一个字节(参见占一个字节(参见P50)字符变量定义字符变量定义char 变量名,变量名,变量名变量名2,变量名,变量名3,. 【注意注意】字符型数据与整型数据字符型数据与整型数据在存储方式上的在存储方式上的相似性使得两者之间相似性使得两者之间可以通用可以通用。字符型数据的表示范围是:字符型数据的表示范围是:0 0255255。举例举例字符变量字符变量ch中存放字符中存放字符a,其,其ASCII码为码为97,在内存中以二进制形式存放,其格式如下:在内存中以二进制形式存放,其格式如下:0 1 1 0 0 0 0 1ch34#include void main() c

24、har ch1,ch2; ch1=a; ch2=b; printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%d,ch2=%dn,ch1,ch2); 字符类型字符类型举例举例1 1一个字符型数据,既可以字符形式输出,一个字符型数据,既可以字符形式输出,也可以整数形式输出也可以整数形式输出ch1=a,ch2=bch1=97,ch2=98程序运行结果:程序运行结果:例例 字符变量的字符形式输出和整数形式输出。字符变量的字符形式输出和整数形式输出。35字符类型字符类型举例举例2 2允许对字符数据进行算术运算允许对字符数据进行算术运算对它们的对它们的ASCIIASCII

25、码值进行算术运算码值进行算术运算例例大小写字母的转换(参考大小写字母的转换(参考P364的的ASCII码表)。码表)。 #include void main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换字母的大小写转换*/ ch1 =ch1-32;ch2= ch2+32; printf(ch1=%c,ch2=%cn,ch1,ch2); ch1=A,ch2=b程序运行结果:程序运行结果:36字符类型字符类型举例举例3 3用字符形式输出一个大于用字符形式输出一个大于256的数值,应将其减去的数值,应将其减去256的的N倍后,将所得数据转换成相应的字符。倍后,将所

26、得数据转换成相应的字符。例例字符数据的算术运算。字符数据的算术运算。 #include void main() char ch1=a; printf( ch1=%cn, ch1); printf(ch1+201=%dn, ch1+201); printf(ch1+201=%cn, ch1+201); printf(ch1+256=%dn, ch1+256); printf(ch1+256=%cn, ch1+256); ch1=ach1+200=297程序运行结果:程序运行结果:ch1+200=)ch1+256=353ch1+256=a37字符串常量字符串常量概念概念用一对双引号用一对双引号 括

27、起来的若干字符序列括起来的若干字符序列字符串字符串长度长度字符串中字符的个数。字符串中字符的个数。长度为长度为0 0的字符串(即的字符串(即一个字符都没有的字符串)称为空串,表示一个字符都没有的字符串)称为空串,表示为为 (一对紧连的双引号)。(一对紧连的双引号)。存储方式存储方式C C语言规定:在存储字符串常量时,语言规定:在存储字符串常量时,由系由系统在字符串的末尾自动加一个统在字符串的末尾自动加一个 0 0 作作为字符串的结束标志。为字符串的结束标志。如:如:“Hello” Hello0空操作字符,不显示也不空操作字符,不显示也不引起任何操作引起任何操作38占用字节而非占用字节而非字节内

28、存空间字节内存空间1、 字符串常量字符串常量How do you do.和和Good morning的长度分别是多少?的长度分别是多少?2、 字符串常量字符串常量C:msdosv6.22 和和I say: “ Goodbye! ” 用用printf()如何表示?()如何表示?3、 字符串字符串CHINA在内存中的实际存储形式是怎在内存中的实际存储形式是怎样的?占用多少个字节的内存空间?样的?占用多少个字节的内存空间?14和和12C:msdosv6.22和和I say:Goodbye!CHINA0思考思考391 1、aa是字符,是字符, aa是字符串。是字符串。2 2、 不能把一个字符串赋给一个

29、字符变量。不能把一个字符串赋给一个字符变量。 如如c=ac=a、c=Hello! c=Hello! 都是错误的。都是错误的。3 3、C C语言中没有字符串变量,语言中没有字符串变量,可以用字符数可以用字符数组来表示。组来表示。 Why?【注意注意】【归纳总结归纳总结】用表格形式比较字符与字符串的不同。用表格形式比较字符与字符串的不同。40Studies this matter, lacks the time, but is lacks diligently. 学习这件事,不是缺乏时间,而是缺乏努力。学习这件事,不是缺乏时间,而是缺乏努力。 1.以下合法的字符型常量是以下合法的字符型常量是 A

30、0 x13 B 081 C 65 D n2. 以下选项中不属于字符常量的是以下选项中不属于字符常量的是 A)C B)C C) D)0723. 以下关于以下关于long、int和和short类型数据占用内存大小的类型数据占用内存大小的叙述中正确的是叙述中正确的是A)均占均占4个字节个字节 B)根据数据的大小来决定所占内存的字节数根据数据的大小来决定所占内存的字节数C)由用户自己定义由用户自己定义 D)由由C语言编译系统决定语言编译系统决定43(四)(四) 不同类型数据间的转换不同类型数据间的转换(一)(一) 隐式转换(自动转换)隐式转换(自动转换)(二)(二) 显式转换(强制转换)显式转换(强制

31、转换)44(一)隐式转换(系统自动转换)(一)隐式转换(系统自动转换)【转换发生条件转换发生条件】v运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时v赋值转换赋值转换-把一个值赋给与其类型不同的变量时,把一个值赋给与其类型不同的变量时, 以变量类型为准以变量类型为准v输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式v函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换先转换、后运算先转换、后运算45赋值转换赋值转换#include void main() int a;float b;a=3.6;b=9; printf(a=%dn,a

32、); printf(b=%f,b); 程序运行结果:程序运行结果:a=3b=9.00000046转换规则转换规则doublefloatlongunsignedintchar,short高高低低 低级类型的数据一定要转换成高级类型的低级类型的数据一定要转换成高级类型的数据之后,才能参加运算。数据之后,才能参加运算。 隐式转换(系统自动转换)隐式转换(系统自动转换)说明说明: :必定的转换必定的转换运算对象类型运算对象类型不同时转换不同时转换47int i;float f;double d;long e; i=2;f=2.5;d=3.9;e=3; 10+a+i*f-d/e1075.01.3112.

33、 0110. 7intdoubledoubledoubledouble 根据已知变量定义及赋值语句,计算以下表达根据已知变量定义及赋值语句,计算以下表达式的值,并说明每一步所得结果的数据类型。式的值,并说明每一步所得结果的数据类型。【思考思考】若表达式中只有若表达式中只有floatfloat型,型,最终结果什么类型?最终结果什么类型?【思考思考】48(二)显式转换(强制转换)(二)显式转换(强制转换)一般形式一般形式 ( (要转换成的数据类型要转换成的数据类型)( )(被转换的表达式被转换的表达式) )注:当被转换的表达式是一个简单表达式注:当被转换的表达式是一个简单表达式时,一对圆括号可以缺

34、省。时,一对圆括号可以缺省。 (intint)(x) (x) (intint)x x 举例举例 float x,y; x=2.3 ; y=4.5float x,y; x=2.3 ; y=4.5; 要求:要求:1.1.将将x+yx+y的和转换成整型,如何表示?的和转换成整型,如何表示?2.2.将将x x转换成整型再与转换成整型再与y y相加,如何表相加,如何表示?最终结果是什么类型?示?最终结果是什么类型? 49(二)显式转换(强制转换)(二)显式转换(强制转换)说明说明强制转换得到的是所需类型的中间强制转换得到的是所需类型的中间变量,原变量或表达式的类型不变。变量,原变量或表达式的类型不变。参

35、考答案:参考答案: (int)(x+y) / 6 (int) (int)x+y / 6.5 (double)50#include void main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d,x,i);以下程序的输出结果是什么?以下程序的输出结果是什么?x=3.600000,i=3程序运行结果:程序运行结果:结论:较高类型结论:较高类型向较低类型转换向较低类型转换时可能发生时可能发生精度精度损失问题损失问题思考思考51举例:已知三角形的边长举例:已知三角形的边长a a、b b、c c,求三角形周长的一半。求三角形周长的一半。s=0.

36、000000程序运行结果:程序运行结果:?#include void main() float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf(s=%f,s);s=6.000000程序运行结果:程序运行结果:改为:改为:1.0/2 (1/2.0)或或 (float)1/2 (1/(float)2)52(一)(一)C C运算符简介运算符简介(二)算术运算符和算术表达式(二)算术运算符和算术表达式(三)赋值运算符和赋值表达式(三)赋值运算符和赋值表达式(四)逗号运算符和逗号表达式(四)逗号运算符和逗号表达式四、运算符与表达式四、运算符与表达式531、算术

37、运算符、算术运算符 + - * / %2、关系运算符、关系运算符 = = != 3、逻辑运算符、逻辑运算符 ! & |4、位运算符、位运算符 | &5、赋值运算符、赋值运算符 =及其扩展赋值运算符及其扩展赋值运算符6、条件运算符、条件运算符 ? :7、逗号运算符、逗号运算符 ,8、指针运算符、指针运算符 * &9、求字节数运算符、求字节数运算符 sizeof10、强制类型转换运算符、强制类型转换运算符 (类型)类型)11、分量运算符、分量运算符 . 12、下标运算符、下标运算符 13、其他、其他 如函数调用运算符()如函数调用运算符()分类分类 运算符运算符 (一)(一

38、)C C运算符简介运算符简介54常量、变量常量、变量函数等函数等+ - * / %说明说明 例:例: 5/3=? -5/3=?模运算符或求余运算符模运算符或求余运算符算术表达式算术表达式用算术运算符和括号将用算术运算符和括号将运算对象运算对象(也称操作数)(也称操作数)连接起来的、符合连接起来的、符合C语法规则的式子。语法规则的式子。 1.两个整数相除的结果为整数两个整数相除的结果为整数,舍去小数部分。,舍去小数部分。当商为负数时,多采用当商为负数时,多采用“向零取整向零取整”的方法。的方法。2.求余运算的两侧均应为整数求余运算的两侧均应为整数 例:例:5%3=2例:例: a*b/c-1.5+

39、a (二)算术运算符和算术表达式(二)算术运算符和算术表达式基本算术运算符基本算术运算符55优先级和结合性优先级和结合性优先级:优先级:先乘除、后加减,有括号先算括号。先乘除、后加减,有括号先算括号。结合性:自左至右结合性:自左至右说明说明如果一个运算符两侧的数据类型不同,先自如果一个运算符两侧的数据类型不同,先自动进行类型转换,使二者具有同一类型,然动进行类型转换,使二者具有同一类型,然后进行运算。后进行运算。 aa + +1+1.5+1+1.5+(二)算术运算符和算术表达式(二)算术运算符和算术表达式56自增、自减运算符自增、自减运算符作用:自增运算符()使单个变量的值增作用:自增运算符(

40、)使单个变量的值增1 1; 自减运算符()使单个变量的值减自减运算符()使单个变量的值减1 1。i=i+1格式:格式: 前置:前置:+i , -i (使使i的值加(减)的值加(减)1后,再取出后,再取出i值值) 后置:后置:i+ , i- (在取出在取出i值之后,使值之后,使i的值加(减)的值加(减)1)i=i-1(二)算术运算符和算术表达式(二)算术运算符和算术表达式结合方向:结合方向: 自右至左自右至左57【例例】i=3;A) j=+i;j=i+;B) j=-i+;? j,i A) j=4 i=4(二)算术运算符和算术表达式(二)算术运算符和算术表达式j=3 i=4C)j=-3 i=4【例

41、例】i=3;A) c=(i+)+(i+);? c, i 【例例】i=3; j=4;i+j? i, j 【例例】i=3; printf(“%d,%d”,i,i+)? 【注意注意】不要写别人看不懂、不知系统如何执行的程序!不要写别人看不懂、不知系统如何执行的程序!59(1) (1) 自增、自减运算是语言特有的,自增、自减运算是语言特有的,常用于循环语常用于循环语句中句中,使循环控制变量加(或减),以及指针变量,使循环控制变量加(或减),以及指针变量中,使指针指向下(或上)一个地址。中,使指针指向下(或上)一个地址。(2) (2) 自增、自减运算符,不能用于常量和表达式。自增、自减运算符,不能用于常

42、量和表达式。 例:例:5+5+、-(a+b)-(a+b)等都是非法的。等都是非法的。(3) (3) +和和-的结合方向为自右至左。的结合方向为自右至左。【说明说明】60(4) (4) 一个变量的自增自减运算,单独构成语句,前置一个变量的自增自减运算,单独构成语句,前置和后置运算效果一样,都是使变量自加。和后置运算效果一样,都是使变量自加。如如: i+;: i+;和和 +i;+i;是一样的,都是使是一样的,都是使i i加。加。(5) (5) 在表达式中,连续使用同一变量进行自增或自减在表达式中,连续使用同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。运算时,很容易出错,所以最好避

43、免这种用法。【说明说明】c=(i+)+(i+);61赋值运算符赋值运算符简单赋值运算符:简单赋值运算符:= =复合赋值运算符:复合赋值运算符:+=+=, -=-=,* *= =,/= %= /= %= 简单赋值运算符的一般形式简单赋值运算符的一般形式: 变量变量 = = 表达式表达式 复合赋值运算的一般格式为:复合赋值运算的一般格式为: 变量变量 双目运算符双目运算符 = = 表达式表达式 复合赋值运算符复合赋值运算符(三)赋值运算符和赋值表达式(三)赋值运算符和赋值表达式 a+=b 相当于相当于 a=a+b a*=b 相当于相当于 a=a*b62例例1float a; int b;a=1.2

44、;b=a*3;? b b=3例例2a+=3;x*=y+8a=a+3;x=x*(y+8)例例3a=b=5;a=7+(b=8)? a,b a=5 ;b=5a=15;b=8举例举例练习:设练习:设a=12a=12,计算表达式的值,计算表达式的值: :a+=a-=aa+=a-=a* *12 a+=a-=a12 a+=a-=a* *=12=1263逗号运算符逗号运算符,逗号表达式逗号表达式表达式表达式1 1,表达式,表达式2 2, ,表达式,表达式n n说说明明1 1、逗号表达式的求解过程:自左至右、逗号表达式的求解过程:自左至右2 2、整个逗号表达式的值:最后一个表达式的值整个逗号表达式的值:最后一个

45、表达式的值3 3、逗号运算符的优先级最低。逗号运算符的优先级最低。4 4、常用于常用于forfor循环语句中,循环语句中,除此以外很少使用除此以外很少使用。如:如: for(i=2,sum=0;i6;i+) for(i=2,sum=0;i6;i+) (四)逗号运算符和逗号表达式(四)逗号运算符和逗号表达式如:如:a=3, 3*5,a*464 例例11a=3a=(3*5,a*4)? a a=12 例例22a=3a=3*5,a*4? a a=15表达式的值表达式的值为为60 例例33(a=3*5,a*4),),a+5? a a=15表达式的值表达式的值为为202006-91 1、有以下程序、有以下程序 main( )main( ) int a=0,b=0; int a=0,b=0; a=10; b=20; a=10; b=20; printf(a+b=%dn, a+b); printf(a+b=%dn, a+b); A. a+b=10 B a+b=30 C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论