《第三章基本数据类型和运算 (2)精选文档.ppt》由会员分享,可在线阅读,更多相关《第三章基本数据类型和运算 (2)精选文档.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章基本数据类型和运算本讲稿第一页,共四十七页3.1 C3.1 C的数据类型的数据类型1 1、基本类型:、基本类型:整型、实型、字符型、枚举型;整型、实型、字符型、枚举型;2 2、构造类型:、构造类型:数组类型、结构体类型、共用体类型数组类型、结构体类型、共用体类型3 3、指针类型、指针类型4 4、空类型、空类型C C程序中的数据包括:程序中的数据包括:(1 1)常量)常量是程序执行前值已知,执行过程中是程序执行前值已知,执行过程中不能被改变的数据。不能被改变的数据。(2 2)变量)变量是执行过程中可以被改变的数据。是执行过程中可以被改变的数据。(3 3)有返回值的函数)有返回值的函数被看成
2、变量。被看成变量。本章主要介绍基本数据类型本章主要介绍基本数据类型本讲稿第二页,共四十七页3.2 3.2 常量与变量常量与变量 3.2.1 3.2.1 标识符标识符1 1、标识符的含义:、标识符的含义:在在C C语言中用于标识名字的有效字符序列。语言中用于标识名字的有效字符序列。通常是指用户定义的符号常量、变量、数组通常是指用户定义的符号常量、变量、数组和函数的名字等。和函数的名字等。C C语言中没有标准标识符的概念,语言中没有标准标识符的概念,mainmain可以可以看成为唯一的标准标识符,它被编译程序预看成为唯一的标准标识符,它被编译程序预定义为主函数的名字。定义为主函数的名字。本讲稿第三
3、页,共四十七页2 2、标识符的组成规则:、标识符的组成规则:标识符是由字母(标识符是由字母(AZAZ,azaz)、数字)、数字(0909)和下划线组成的序列。)和下划线组成的序列。C C语言对标识符作如下规定:语言对标识符作如下规定:(1)(1)标识符的第一个字符必须是字母或下划线。标识符的第一个字符必须是字母或下划线。(2)(2)如果说第一个字符后还有字符序列,则它就如果说第一个字符后还有字符序列,则它就 是字母、下划线或数字组成的序列。是字母、下划线或数字组成的序列。标识符中的字母大小写是有区别的。标识符中的字母大小写是有区别的。如标识符如标识符abcabc与标识符与标识符ABCABC是不
4、相同。是不相同。本讲稿第四页,共四十七页例:例:正确的标识符正确的标识符:program r0 file_2a12PI A _ab ab_ 不正确的标识符不正确的标识符:yes?(含有不合法字符(含有不合法字符“?”)2from(第一个字符不允许为数字)(第一个字符不允许为数字)yes no(标识符中不允许有空格)(标识符中不允许有空格)yes/no(含有不合法字符(含有不合法字符“/”)r(“”为不合法字符)为不合法字符)Order.no (小数点(小数点(.)不是字母也不是数字)不是字母也不是数字)Up-to (减号(减号(-)不是字母也不是数字)非法表示)不是字母也不是数字)非法表示P-
5、x (-不是字母也不是数字)不是字母也不是数字)Namei (不是字母也不是数字)不是字母也不是数字)本讲稿第五页,共四十七页3 3标识符的有效长度标识符的有效长度有效长度有效长度能够被编译程序识别并区别于其它标识符的能够被编译程序识别并区别于其它标识符的那一部分,所包含的字符数目称为标识符的那一部分,所包含的字符数目称为标识符的有效长度。有效长度。C C规定:标识符的有效长度为前规定:标识符的有效长度为前3131个字符,超个字符,超过部分忽略。过部分忽略。例:abcdz12345 abcdz123456789 被视为同一标识符,因后者中的6789已被忽略前前31个字符个字符本讲稿第六页,共四
6、十七页标识符的选择由程序自定,但是不能与保留标识符的选择由程序自定,但是不能与保留字相同。另外,选择标识符时应遵循字相同。另外,选择标识符时应遵循“见名见名知义知义”的原则,即所选择的标符应尽量与所的原则,即所选择的标符应尽量与所要命名的对象有一定的联系,以助于识别和要命名的对象有一定的联系,以助于识别和记忆。记忆。例:例:length length (表示长度)(表示长度)PI PI (表示圆周率(表示圆周率)time time (表示时间)(表示时间)本讲稿第七页,共四十七页4.4.关键字关键字关键字关键字是具有特定含义的,专门用来说明是具有特定含义的,专门用来说明C C语言语言的特定成分
7、的一类单词。的特定成分的一类单词。关键字又称为保留字,即被保留作为专门用关键字又称为保留字,即被保留作为专门用途的特殊标识符。途的特殊标识符。CC语言的关键字通常都是用小写字母表示,语言的关键字通常都是用小写字母表示,而大写字母通常代表一个常数。而大写字母通常代表一个常数。例:保留字例:保留字int,int,不能写成不能写成IntInt由于关键字有特定的用途,所以一般不用于由于关键字有特定的用途,所以一般不用于其他场合。其他场合。本讲稿第八页,共四十七页3.2.2 3.2.2 常量和符号常量常量和符号常量在程序运行过程中不能改变的量在程序运行过程中不能改变的量常量,常常量,常量有类型的。量有类
8、型的。用一个大写的标识符代表一个常量用一个大写的标识符代表一个常量符号常符号常量。注意:符号常量在其作用域是不能改值量。注意:符号常量在其作用域是不能改值的,也不能再赋值。的,也不能再赋值。如:#define PI 3.1415926 main()float r,s;scanf(“%f”,&r);s=PI*r*r;printf(“s=%fn”,s);本讲稿第九页,共四十七页符号常量的定义有三种方法:符号常量的定义有三种方法:方法一:方法一:用编辑预处理指令用编辑预处理指令#define#define定义一个符号定义一个符号常量;常量;方法二:方法二:用用constconst类型限定符定义一个符
9、号常量;类型限定符定义一个符号常量;方法三:方法三:用枚举类型定义一组符号常量。用枚举类型定义一组符号常量。本讲稿第十页,共四十七页3.2.3 变量值可以改变的量称为变量。一个变量有一个名字,在内存中占有一定的单元,该单元中存放该变量的值。注意:变量名变量名和变量值变量值是两个不同的概念。12x变量名变量值存储单元本讲稿第十一页,共四十七页变量与标识符的命名规则一样。变量与标识符的命名规则一样。大写字母与小写字母表示不同的变量。大写字母与小写字母表示不同的变量。取变量名时注意做到取变量名时注意做到“见名知意见名知意”,但有时为了方便,取简单的标识,但有时为了方便,取简单的标识符(如符(如a,b
10、a,b)做为变量名。)做为变量名。C C语言中要求所有变量在使用之前先语言中要求所有变量在使用之前先定义。定义。本讲稿第十二页,共四十七页3.3 整型数据 3.3.1 整型常量的表示方法整型常量的表示方法整型常量就是整常数,它可以用三种形式表示:(1)十进制整数:123,-234,0(2)八进制整数:以数字0开头的整数是八进制数。如0123代表八进制数123,-0234代表八进制数-234。(3)十六进制整数:以0 x开头的整数是十六进制数。如0 x123代表十六进制数123,-0 x23代表十六进制数23。本讲稿第十三页,共四十七页 3.3.2 整型变量整型变量1.整型数据在内存中的存放形式
11、 整型数据在内存中通常占两个字节。所有数据在内存中都用补码形式存放。两个字节中,第一个字节的最高位(首位)作为数据的符号位:正数为0,负数为1。2.整型变量的分类 整型变量的基本类型符是int,可以定义类型:(1)基本类型:int 占占2 2个字节,个字节,-3276832767-3276832767本讲稿第十四页,共四十七页 (2)短整型:short int 或 short 占占2 2个字节个字节,-3276832767,-3276832767 (3)长整型:long int 或 long 占占4 4个字节个字节,-2147483648147483648,-21474836481474836
12、48 (4)有符号整数:signed 占占2 2个字节,个字节,-3276832767-3276832767 (5)无符号整数:unsigned 无符号短整型无符号短整型,占占2 2个字节个字节,065535,065535 无符号长整型无符号长整型,占占4 4个字节个字节0429496729504294967295本讲稿第十五页,共四十七页3.整型变量的定义 对变量的定义,一般是放在一个函数的开头部分的声明部分中。格式:类型类型 变量变量1,变量,变量2,变量,变量 n;说明:变量名之间用逗号说明:变量名之间用逗号“,”隔开。隔开。一个说明语句结束时一个说明语句结束时,必须有分号必须有分号“;
13、”“;”。例:int a,b,c;short x,y;unsigned d;本讲稿第十六页,共四十七页4.整型数据的溢出当数据大于所定义的类型范围时,就产生溢出。P44产生整数溢出的后果:产生整数溢出的后果:对于常量,编译时产生语法错误;对于变量,将得不到正确的结果。程序中如何避免整数溢出:程序中如何避免整数溢出:为避免溢出或类型转换的需要,应根据具体情况将整数相应地表示为长整数、无符号整数或无符号长整数。方法是:方法是:对于常量,加整数后缀(对于常量,加整数后缀(U U、u u、L L、l l););对于变量,则说明为对于变量,则说明为long,unsigned,unsigned long,
14、unsigned,unsigned longlong类型类型本讲稿第十七页,共四十七页 3.4 实型数据3.4.1 3.4.1 实型常量的表示法实型常量的表示法 小数形式:由数字、数符和小数点组成小数形式:由数字、数符和小数点组成(必须有小数点)。例:(必须有小数点)。例:0.123 0.123,-123.-123.,.123.123 指数形式:数字部分指数形式:数字部分e e指数部分。指数部分。例:例:123e3 123e3 ,1.2e5 1.2e5注意:字母注意:字母e(e(或或E)E)之前必须有数字,之前必须有数字,e e后面后面 指数必须是整数指数必须是整数(13(13位位)。如:如:
15、e3e3、2.1e3.52.1e3.5、e e是不合法的指数形式是不合法的指数形式本讲稿第十八页,共四十七页一般形式为:一般形式为:整数部分整数部分小数部分小数部分en注意:注意:(1 1)一个浮点数可以无整数部分或小数)一个浮点数可以无整数部分或小数部分,但不能二者均无。部分,但不能二者均无。(2 2)一个浮点数可以无小数点部分或指)一个浮点数可以无小数点部分或指数部分,但不能二者均无。数部分,但不能二者均无。无论哪种情况,都必须有小数点。无论哪种情况,都必须有小数点。n称为阶码,称为阶码,n为为13位十进制无符号整型常量(可以位十进制无符号整型常量(可以有前置有前置0).n前面的前面的“+
16、”和整数部分前面的和整数部分前面的“+”可以省略。可以省略。本讲稿第十九页,共四十七页3.4.2 实型变量1、实型数据在内存中的存放形式 一般占4个字节,看教材46页。2、实型变量的分类 C语言中实型变量分为单精度(float)、双精度(double)、长双精度(long double)三类,对于第3类长双精度用的较少,有关规定请看教材46页表3.2。3、实型数据的舍入误差 注意:实型变量提供的有效数字是有限的。本讲稿第二十页,共四十七页3.4.3 实型常量的类型实型常量的类型 实型常量的类型通常也有上述三种,要特别实型常量的类型通常也有上述三种,要特别注意实型数字的有效数字位问题。看下例:注
17、意实型数字的有效数字位问题。看下例:main()float a;double b;a=111111.111;b=111111.111;printf(“a=%fnb=%fn”,a,b);运行结果:运行结果:a=111111.109375b=111111.111000本讲稿第二十一页,共四十七页3.5 字符型数据3.5.1 3.5.1 字符常量字符常量字符型数据是用单引号括起来的单个字符,形式为:字符型数据是用单引号括起来的单个字符,形式为:字符字符。字符常数是一个整数,值为所用计算机字符集中一个字符的字符常数是一个整数,值为所用计算机字符集中一个字符的ASCIIASCII编码值(称为字符码),机
18、器字符集一般为编码值(称为字符码),机器字符集一般为ASCIIASCII字符字符集。集。字符字符单引号内的字符有两种表示方法:单引号内的字符有两种表示方法:(1 1)用字符的图形符号表示一个字符,)用字符的图形符号表示一个字符,形式为:形式为:字符的图形符号字符的图形符号。(2 2)用转义序列表示一个字符,形式为:)用转义序列表示一个字符,形式为:转义序列转义序列。转义序列是由反斜线(。转义序列是由反斜线()开头的一个)开头的一个特殊字符串,每个转义序列表示字符集中的一个字符。特殊字符串,每个转义序列表示字符集中的一个字符。如教材如教材4848页表页表3.33.3。本讲稿第二十二页,共四十七页
19、看下面的例子:main()printf(“ab ct derftgn”);printf(“htibbj k”);在打印机上显示:在打印机上显示:fab c gdefab c gdeh jikh jik在屏幕上显示:在屏幕上显示:f gdef gdeh j kh j k本讲稿第二十三页,共四十七页3.5.2 3.5.2 字符变量字符变量 字符型变量只能放一个字符。字符型变量只能放一个字符。定义定义 char c1,c2;char c1,c2;赋值赋值 c1=c1=a a;c2=;c2=b b;3.5.3 3.5.3 字符数据存储形式字符数据存储形式字符数据是以字符数据是以ASCIIASCII码存
20、储的,它的存储形式与整数的码存储的,它的存储形式与整数的存储形式相类似,即存储形式相类似,即c1c1变量存储的是变量存储的是ASCIIASCII码码9797,也就,也就是说下面两个语句是等价的:是说下面两个语句是等价的:c1=c1=a a;和和c1=97;c1=97;0 1 11000 0它们在内存的存储情况:它们在内存的存储情况:本讲稿第二十四页,共四十七页看下面两个例子:main()char c1,c2;c1=97;c2=98;printf(“%c%cn”,c1,c2);printf(“%d%dn”,c1,c2);运行结果为:运行结果为:a b97 98main()char c1,c2;c
21、1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%cn”,c1,c2);运行结果为:运行结果为:A B考虑:若考虑:若c1是整型,是整型,c2是字符型,结果如何?是字符型,结果如何?本讲稿第二十五页,共四十七页字符串常量:是用一对是用一对双撇号双撇号括起来的字符序列,其括起来的字符序列,其形式为:“字符序列”例:“This is a pen”一个字符串可以包含0个字符,表示为“”,称为空串。字符串在机内存储时,系统在其末尾添加了一个0字符;0是字符串结束标志,以便确定字符串的实际长度,即字符串的存储长度要比实际长度大1。所以,空串的存储长度为1而不是0。3.5.4 字
22、符串常量字符串常量本讲稿第二十六页,共四十七页注意:注意:(1)“a”和a是两个不同的概念:字符串“a”是存储长度为2的一个字符串。字符a是一个字符,实际上是一个值为 ASCII码的整数。(2)当双引号作为字符串的组成字符时,必须用转义序列表示。例:“3 40”(3)当单引号作为字符串的组成字符时,可以用图形符号表示。例:“Its a pen”从存储结构上讲,字符串是一个字符数组。从存储结构上讲,字符串是一个字符数组。本讲稿第二十七页,共四十七页语法规定:语法规定:如果字符串常数一行写不下,则有两种方法如果字符串常数一行写不下,则有两种方法可以将行扩展到下一行:可以将行扩展到下一行:一种方法是
23、在行的末尾加续行符一种方法是在行的末尾加续行符“”“”。如:如:printf(“#Hello!printf(“#Hello!how are you?”);how are you?”);另一种方法是依靠字符串连接功能另一种方法是依靠字符串连接功能如:如:printf(“Hello!”printf(“Hello!”“how are you?”);“how are you?”);本讲稿第二十八页,共四十七页可以在定义变量的同时进行变量初始化。可以在定义变量的同时进行变量初始化。例:例:int a=3;/*int a=3;/*指定指定a a为整型变量,初值为为整型变量,初值为3*/3*/float f
24、=3.56;float f=3.56;char c=char c=a a;说明:说明:1.1.可以给被定义的变量的一部分赋初值。可以给被定义的变量的一部分赋初值。int a,b,c=5;int a,b,c=5;2.2.可以对几个变量赋以同一个值。但不能写成:可以对几个变量赋以同一个值。但不能写成:int a=b=c=3;int a=b=c=3;应该写成应该写成 int a=3,b=3,c=3;int a=3,b=3,c=3;3.3.变量赋初值是在程序运行时完成的。变量赋初值是在程序运行时完成的。int a=3;int a=3;相当于相当于 int a;a=3;int a;a=3;两条语句两条语
25、句 3.6 变量赋初值本讲稿第二十九页,共四十七页整型、实型(单、双精度)、字符型数据间可以混合运整型、实型(单、双精度)、字符型数据间可以混合运算。算。例如:例如:10+a+1.5-8765.1234*b 10+a+1.5-8765.1234*b 高高 doublefloat doublefloat long long unsigned unsigned 低低 intchar,short intchar,short 为必定的转换为必定的转换当运算对象为不同类型当运算对象为不同类型时转换的方向时转换的方向 3.7各类数值型数据间的混合运算各类数值型数据间的混合运算本讲稿第三十页,共四十七页3.
26、83.8 算术运算符和算术表达式算术运算符和算术表达式3.8.1 3.8.1 运算符的种类运算符的种类1)1)算术运算符算术运算符 */%*/%2)2)关系运算符关系运算符 =12)12)下标运算符下标运算符 本讲稿第三十一页,共四十七页3.8.2 3.8.2 算术运算符和算术表达式算术运算符和算术表达式1.1.基本算术运算符基本算术运算符 */%*/%说明:说明:(1 1)两个整数相除结果为整数,如两个整数相除结果为整数,如5/3=15/3=1,如,如果除数或被除数中有一个为负值,多数机器采果除数或被除数中有一个为负值,多数机器采取取“向零取整向零取整”的方法。的方法。(2 2)参与运算的两
27、个数中有一个为实数,则结)参与运算的两个数中有一个为实数,则结果为果为doubledouble型。例:型。例:6/2.06/2.0的结果为的结果为3.03.0(3 3)模运算符)模运算符(或称求余运算符或称求余运算符)两侧的运算量两侧的运算量均为整型量。均为整型量。本讲稿第三十二页,共四十七页2.2.算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象(也称操作数)用算术运算符和括号将运算对象(也称操作数)连接起来,连接起来,符合符合C C语法规则语法规则的式子,称的式子,称C C算术表达算术表达式。式。表达式求值时,按运算符的优先级别依次执行。若
28、表达式求值时,按运算符的优先级别依次执行。若优先次序相同,则按优先次序相同,则按“自左至右自左至右”的结合方向计算。的结合方向计算。例:例:2+12/6*5%3+A 2+12/6*5%3+A本讲稿第三十三页,共四十七页3.3.强制类型转换运算符强制类型转换运算符 可以利用可以利用强制类型转换运算符强制类型转换运算符将一个表达式转换将一个表达式转换成所需类型。成所需类型。一般形式:一般形式:(类型名)(表达式)(类型名)(表达式)如:如:(int)x (int)x (int)(x+y)(int)(x+y)注意:用此方法得到的类型是中间结果,它并不改注意:用此方法得到的类型是中间结果,它并不改变变
29、量原先的类型。变变量原先的类型。本讲稿第三十四页,共四十七页4.4.自增、自减运算符自增、自减运算符+i,-i:在使用在使用i i之前,先使之前,先使i i的值加的值加(减减)1)1,即先改,即先改值后用。值后用。i+,i-:在使用在使用i i之后,再使之后,再使i i的值加的值加(减减)1)1,即先用后,即先用后改值改值说明:说明:自增、自减运算符只能用于变量,而不能用于常自增、自减运算符只能用于变量,而不能用于常量或表达式。量或表达式。+和和-的结合方向是的结合方向是“从右至左从右至左”。-i+-(i+)-i+-(i+)C C语言的表达式中语言的表达式中+,-的出现,很容易导致的出现,很容
30、易导致错误。错误。本讲稿第三十五页,共四十七页例:例:k=(i+)+(i+)+(i+)k=(i+)+(i+)+(i+)若若i i的初值为的初值为3 3,在,在TcTc,MscMsc系统中系统中k=9,i=6k=9,i=6例:例:k=(+i)+(+i)+(+i)k=(+i)+(+i)+(+i)若若i i的初值为的初值为3 3,在,在TcTc,MscMsc系统中系统中 k=18,i=6 k=18,i=6例:例:printf(“%d,%d”,i,i+);printf(“%d,%d”,i,i+);若若i i的初值为的初值为3 3,在上述系统中结果为:,在上述系统中结果为:4 4,3 3本讲稿第三十六页
31、,共四十七页 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式1.1.赋值运算符赋值运算符 符号:符号:=作用:将一个数据赋给一个变量。作用:将一个数据赋给一个变量。2.2.赋值时的类型转换问题赋值时的类型转换问题(1 1)将实型数据(包括单、双精度)赋给整型变)将实型数据(包括单、双精度)赋给整型变量时,舍弃实数的小数部分。量时,舍弃实数的小数部分。(2 2)整数赋值给单、双精度变量时,数值不变,)整数赋值给单、双精度变量时,数值不变,以浮点数形式表示。以浮点数形式表示。本讲稿第三十七页,共四十七页(3 3)字符型数据赋给整型变量时,放在整型变)字符型数据赋给整型变量时,放在整型
32、变量的低量的低8 8位,分两种情况:位,分两种情况:若所用系统将字符处理为无符号的量或对若所用系统将字符处理为无符号的量或对unsigned charunsigned char型变量赋值,则将字符的型变量赋值,则将字符的8 8位放到整型位放到整型变量的低变量的低8 8位,高位,高8 8位补位补0 0。若系统将字符处理为带符号的量,若字符若系统将字符处理为带符号的量,若字符最高位为最高位为0 0,则整型变量高,则整型变量高8 8位补位补0 0,相反,则全,相反,则全补补1 1。这称为。这称为“符号扩展符号扩展”,这样做的目的是使,这样做的目的是使数值保持不变。看教材数值保持不变。看教材6060页
33、图页图3.113.11。本讲稿第三十八页,共四十七页(4 4)带符号的整型数据()带符号的整型数据(intint型)赋给长整型变型)赋给长整型变量要进行符号扩展,量要进行符号扩展,intint数为正值,则数为正值,则long intlong int型变型变量的高量的高1616位补位补0 0,相反补,相反补1 1,整型数的,整型数的1616位送到位送到longlong型的低型的低1616位。位。(保持数据不变保持数据不变)long int long int型数值赋给型数值赋给intint型变量时,只需将型变量时,只需将long intlong int的的低低1616位放入位放入intint型变量
34、中(即截断,有效的只有低型变量中(即截断,有效的只有低1616位)。位)。看书教材看书教材6060页图页图3.133.13。本讲稿第三十九页,共四十七页(5)unsigned int(5)unsigned int型数据赋给型数据赋给long intlong int型变量型变量 只需高位补只需高位补0 0即可。若将一个即可。若将一个unsignedunsigned类型数据赋给一类型数据赋给一个占字节相同的整型变量,内容原封不动送到非个占字节相同的整型变量,内容原封不动送到非unsignedunsigned型变量中,但可能会因超范围而出错。型变量中,但可能会因超范围而出错。(6)(6)将非将非un
35、signedunsigned型数据赋给长度相同的型数据赋给长度相同的unsignedunsigned型型变量,也是原样照赋。变量,也是原样照赋。本讲稿第四十页,共四十七页3.3.复合的赋值运算符复合的赋值运算符(1 1)复合运算符:)复合运算符:1010种种 +=+=,-=-=,*=*=,/=/=,%=%=,=,=,&=&=,=,|=|=例如:例如:a+=3 a=a+3a+=3 a=a+3 x*=y+8 x=x*(y+8)x*=y+8 x=x*(y+8)x%=3 x=x%3 x%=3 x=x%3(2 2)意义:)意义:简化程序,使程序精炼。简化程序,使程序精炼。提高编译效率。提高编译效率。本讲
36、稿第四十一页,共四十七页4.4.赋值表达式赋值表达式(1 1)概念:概念:由赋值运算符将一个变量和一个表由赋值运算符将一个变量和一个表达式连接起来的式子。达式连接起来的式子。(2 2)一般形式:一般形式:变量赋值运算符表达式变量赋值运算符表达式求解过程:将赋值运算符右侧的求解过程:将赋值运算符右侧的“表达式表达式”的值赋给的值赋给左侧的变量,左侧的变量,赋值表达式的值赋值表达式的值就是被赋值的变量的值。就是被赋值的变量的值。例例 a=b=c=5 a=b=c=5 a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/
37、(c=2)a+=a a+=a=a*a (a=12)=a*a (a=12)本讲稿第四十二页,共四十七页3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式1)1)逗号运算符又称顺序求值运算符逗号运算符又称顺序求值运算符2)2)一般形式:一般形式:表达式表达式1 1,表达式,表达式2 23)3)求解过程:求解过程:先求解表达式先求解表达式1 1,再求解表达式,再求解表达式2 2,整个表达式的,整个表达式的值是表达式值是表达式2 2的值。的值。例:例:a=3*5,a*4 aa=3*5,a*4 a的值为的值为1515,表达式的值为,表达式的值为6060 x=(a=3,6*3)x=(a=3,6*3)赋
38、值表达式赋值表达式 x=a=3,6*a x=a=3,6*a 逗号表达式逗号表达式本讲稿第四十三页,共四十七页逗号表达式的一般形式可以扩展为:表达式表达式1,1,表达式表达式2,2,表达式表达式n n表达式的值是最后表达式n的值。如:a=3 b=(a+=2,2*5,a*2)则b的值为10。有关表达式的使用请同学们平时注意。本讲稿第四十四页,共四十七页例:main()int i,j,x,y,z,k;i=2;j=5;x=7;y=10;z=(+i)+(x+);k=(-j)+(y-);printf(“%d n%d n”,z,k);运行结果是:10 而不是 11 14 13先自增后引用i=i+1(i=2+1)先引用后自增X=7;Z=3+7本讲稿第四十五页,共四十七页例:main()int i,j;i=3;printf(“i=%dn”,j=i+);/*先引用,后自增*/printf(“i=%dn”,i);printf(“i=%dn”,j=+i);/*先自增,后引用*/printf(“i=%dn”,i);输出结果:i=3 i=4 i=5 i=5先得到j=i然后i=i+1先i=i+1然后j=i本讲稿第四十六页,共四十七页今天我们就学到这里,请同今天我们就学到这里,请同学回去注意看书、复习,注学回去注意看书、复习,注意上机验证。意上机验证。本讲稿第四十七页,共四十七页