c语言程序设计课件:第三章表达式_第1页
c语言程序设计课件:第三章表达式_第2页
c语言程序设计课件:第三章表达式_第3页
c语言程序设计课件:第三章表达式_第4页
c语言程序设计课件:第三章表达式_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、 第三章第三章 表达式表达式 3.1 C 3.1 C 的数据类型的数据类型基本类型 (整型、实型实型、字符型字符型、枚举型)枚举型)构造类型 (略)指针类型 (略) 空类型 各类型包含常量常量与与变量变量 3.2 3.2 常量与变量常量与变量 常量与符号常量常量与符号常量 常量常量 在程序运行过程中其值保持不变的量。在程序运行过程中其值保持不变的量。 符号常量符号常量 用来代表一个常量的标识符。 #define PI 3.1415926#define PI 3.1415926 例:例: #define #define PIPI 3.1415926 3.1415926 main() main()

2、 float float r r=2,=2,c c; ; c c=2=2* *PIPI* *r r; ; printf(“%f”, printf(“%f”,c c);); 变量变量 其值可以改变的量。其值可以改变的量。 变量的三要素变量的三要素: : 变量名变量名每个变量有一个名字,作为识别该变量的每个变量有一个名字,作为识别该变量的标识符。标识符。 变量的值变量的值 每个变量有一个值,变量的值是随时每个变量有一个值,变量的值是随时可以改变的。可以改变的。 变量的存储单元变量的存储单元 每个变量占据一个内存单元,用于存放变量每个变量占据一个内存单元,用于存放变量的值的值。 变量名 a 变量值

3、存储单元3 变量的命名规则:变量的命名规则: 由字母、数字和下划线组成由字母、数字和下划线组成 以字母或下划线开头以字母或下划线开头 a a、x1x1、y_2y_2、_b1_b1、_1c _1c 合法合法 1x1x、a+2a+2、 不合法不合法 变量必须先定义后使用。变量必须先定义后使用。 程序中何时使用常量?何时使用变量?程序中何时使用常量?何时使用变量? 3.3 3.3 整型数据整型数据 整型常量整型常量 即整常数,即整常数,c c的整常数有三种形式:的整常数有三种形式: 十进制整数十进制整数 与数学中的整数一致,如:与数学中的整数一致,如:100100,123123,1515等。等。 八

4、进制整数八进制整数 以以0 0开头的整数,如:开头的整数,如:010,07,020010,07,020等。等。 十六进制整数十六进制整数 以以0 x0 x开头的整数,如:开头的整数,如:0 x10,0 xff,0 x2a0 x10,0 xff,0 x2a等。等。 整型变量整型变量 用于存放整数的变量。用于存放整数的变量。 分分4 4种类型:种类型: 基本型:基本型:intint a a 16 16位,可表示的数值范围:位,可表示的数值范围:-32768-327683276732767 短整型:短整型:short intshort int b b 16 16位,可表示的数值范围:位,可表示的数值

5、范围:-32768-327683276732767 长整型:长整型:long intlong int c c 32 32位,数值范围:位,数值范围:-2147483648-214748364821474836472147483647 无符号型:加上无符号型:加上 unsignedunsigned 只存放正数。只存放正数。 如:如:unsigned intunsigned int x x 变量变量x x为无符号整数,为无符号整数,1616位全表示数码,位全表示数码, 数值范围:数值范围:0 06553565535 在程序设计中,如果要使用整型变在程序设计中,如果要使用整型变量,必须首先选择以上类

6、型符来定义变量,量,必须首先选择以上类型符来定义变量,然后才能使用;然后才能使用; 例:例: main() main() 定义定义 int int a,b,c; a,b,c; a=100; b=50; a=100; b=50; 使用使用 c=a+b;c=a+b; printf(“%d”,c printf(“%d”,c);); 一般根据什么原则选择变量的类型?一般根据什么原则选择变量的类型? 3.4 3.4 实型数据实型数据 实型常量实型常量 可使用两种形式表示:可使用两种形式表示: 小数形式:小数形式:如如 1.23, 3.1415926 15.481.23, 3.1415926 15.48

7、指数形式:指数形式:如如 1e-20 1.23e5 1e-20 1.23e5 实型变量实型变量 用于存放实数的变量用于存放实数的变量 分单精度和双精度两种:分单精度和双精度两种: float a,bfloat a,b 定义定义a a和和b b为单精度型变量为单精度型变量 3232位,位,7 7位有效数字,位有效数字,1010-38-3810103838 double x,ydouble x,y 定义定义x x和和y y为双精度型变量为双精度型变量 6464位,位,1515位有效数字,位有效数字,1010-308-3081010308308 例:例: main()main() float r,c

8、; float r,c; double r,c;double r,c; r=5; r=5; c=2 c=2* *3.14159263.1415926* *r;r; printf(“%f”,c printf(“%f”,c); ); 3.5 3.5 字符型数据字符型数据 字符常量字符常量 用单引号括起来的一个字符。用单引号括起来的一个字符。 a,x,a,x,* *,1,1等等 除 此 外 , 以除 此 外 , 以 开 头 的 字 符开 头 的 字 符如如n,tn,t等等 称为转义字符,祥见书表称为转义字符,祥见书表3.33.3 字符型变量字符型变量 用于存放字符的变量。用于存放字符的变量。 cha

9、r c1,c2; char c1,c2; 定义定义c1c1和和c2c2为字符型变量为字符型变量 c1=a; c2=b; c1=a; c2=b; 字符赋值字符赋值 字符型变量存放一个字符,占据一个字节字符型变量存放一个字符,占据一个字节 字符型数据的存储形式字符型数据的存储形式 存放ASCII码 不是 而是 如字符如字符aa在内存中存放在内存中存放9797,b b 存放存放9898。 与整数的存储形式一致,它们之间可以通与整数的存储形式一致,它们之间可以通用用 一个字符数据既可以作字符用,也可以作一个字符数据既可以作字符用,也可以作整数用(取其整数用(取其ASCIIASCII代码)。代码)。 如

10、:如:32+a32+a相当于相当于 32+9732+97 若若 intint x; char c; x; char c;则则 x=a; c=97; x=97; c=a; x=a; c=97; x=97; c=a; 都允都允许许 a97 字符串常量字符串常量 用双引号括起来的字符序列。用双引号括起来的字符序列。 如:如:”abcde”abcde”, ,”china”china” ” ”a a”也属字符串。也属字符串。 注意注意”a”a”与与aa的区别。的区别。 对于:对于: char c; char c; c=”a”; c=”a”; 用法错误用法错误 字符串中每个字符各占一个字节,并且在字符串中

11、每个字符各占一个字节,并且在字符串结尾加上一个结束标记字符串结尾加上一个结束标记00 如:如:”china”china” 在内存中占在内存中占6 6个字节。个字节。 c h i n a 0 C C语言中专门的字符串变量,可用字符数语言中专门的字符串变量,可用字符数组存放(以后介绍)。组存放(以后介绍)。 3.6 3.6 变量赋初值变量赋初值 在定义变量的同时给相应的变量赋初值。在定义变量的同时给相应的变量赋初值。 如:如: intint a=3; a=3; a a float b=5.2;float b=5.2; char c=a; char c=a; int int x=y=z=6; x=y

12、=z=6; 效果:效果: 在给变量分配内存单元的同时在相应的单在给变量分配内存单元的同时在相应的单 元中存放初值。元中存放初值。 3 3.7 3.7 各数值型数据间的混合运算各数值型数据间的混合运算 整型、实型、字符型数据间可以进行混合运整型、实型、字符型数据间可以进行混合运算,如:算,如: 10-a10-a* *1.51.5 运算时,参加运算的两个数据如果类型不同,运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则则首先将其类型转换成一致再运算,转换规则是:是: 将优先级低的类型转换到优先级高的类型将优先级低的类型转换到优先级高的类型 数据类型的优先级:数据类型

13、的优先级: 高高 double floatdouble float long long unsigned unsigned 低低 intint char char 3.8 3.8 算术运算符与算术表达式算术运算符与算术表达式 基本的算术运算符基本的算术运算符 + - * / % 算术表达式算术表达式 用算术运算符将运算对象连接起来的式子用算术运算符将运算对象连接起来的式子 用于表达数学公式的式子用于表达数学公式的式子 如:如:2 2* *x+y-1/ax+y-1/a 表达式经过运算最终得到一个值:表达式经过运算最终得到一个值: 算术表达式的值算术表达式的值 运算符的优先级与结合性运算符的优先级

14、与结合性 优先级:优先级: 在对表达式求值时,如果存在多个运算符,则在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进运算的先后次序按运算符的优先级别从高到底进行。行。 运算符的优先级关系为:运算符的优先级关系为: 高:高:* * / %/ % 低:低:+ -+ - 如:如:a-2a-2* *x x 先算先算 * * 2 2* *(a+2) (a+2) 有括号的情况?有括号的情况? 结合性:结合性: 如果在一个运算对象两边的运算符的优先级相如果在一个运算对象两边的运算符的优先级相同,则按规定的同,则按规定的“结合方向结合方向”处理。处理。 如:如:a-b+ca-

15、b+c b b与与- -结合是从左到右,称结合是从左到右,称“左结合性左结合性”。 b b与与+ +结合是从右到左,称结合是从右到左,称“右结合性右结合性”。 每个运算符都有相应的优先级和结合性。每个运算符都有相应的优先级和结合性。 基本算术运算符都是基本算术运算符都是左结合性左结合性。 计算表达式例:计算表达式例: 2+A-1/2.0 1+3/2-12+A-1/2.0 1+3/2-1构造表达式例构造表达式例 2x2x2 2+3x-1+3x-1 a+b a-b a+b a-b x+y x-ya+b/a-b ?(a+b)/(a-b)2*x*x+3*x-1 (*不能省)(a+b)/(a-b)/(x

16、+y)/(x-y)(a+b)/(a-b)/(x+y)/(x-y)(a+b)/(a-b)/(x+y)*(x-y) 强制类型转换强制类型转换可以用强制类型转换运算符将一个表达式可以用强制类型转换运算符将一个表达式的值转换成所需类型:的值转换成所需类型:如:如: (int)(x+y(int)(x+y) ) (float)7/3 (float)7/3 应用举例:应用举例: intint a=200,b=300,c; a=200,b=300,c; c=a c=a* *b/100; b/100; ? ? 可知,有自动转换和强制转换,可知,有自动转换和强制转换, 当自动转换达不到目的时,可用强制转换。当自动

17、转换达不到目的时,可用强制转换。c=(long)a*b/100;c=(long)(a*b)/100; 自增、自减运算符自增、自减运算符 自增运算符:自增运算符:+ 使变量值加使变量值加1 1 自减运算符:自减运算符:- 使变量值减使变量值减1 1 两种用法:两种用法: +i, -i +i, -i 先加(减)后用先加(减)后用 i+, i- i+, i- 先用后加(减)先用后加(减) 两种用法对两种用法对i i效果一样,但表达式的值不同。效果一样,但表达式的值不同。例例:假设:假设i i的原值为的原值为5 5: j=+i; j=?j=+i; j=? j=i+; j=?j=i+; j=? 注意:注

18、意:+和和-只能用于变量。只能用于变量。 如:如:3+3+和(和(a+1a+1)+ 不合法不合法+和和-为右结合性。为右结合性。 (-i)+(-i)+ -i+-i+ -(i+)-(i+) 若若i i的原值是的原值是5 5,则该表达式的值是多少?,则该表达式的值是多少? 例:分析执行下列语句后的结果:例:分析执行下列语句后的结果: a=5; a=5; a b c da b c d b=a+;b=a+; c=-a-b+; c=-a-b+; d=(a+)-(+b)+c-; d=(a+)-(+b)+c-;556 506 7-26-1 两种特殊情况:两种特殊情况: k=(i+)+(i+)+(i+) k=

19、(i+)+(i+)+(i+) i+j i+j 是是 i+(+j)i+(+j) 还是还是 (i+)+j(i+)+j ? ? i+ i+虽然与虽然与i=i+1i=i+1等效,但使用自增自减等效,但使用自增自减运算符的代码优化程度好,因而经常使用;运算符的代码优化程度好,因而经常使用;但用时需特别小心。但用时需特别小心。 3.9 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 赋值运算符赋值运算符 “=”=”称赋值运算符,其作用是将一个数据称赋值运算符,其作用是将一个数据赋给一个变量。赋给一个变量。 如:如: a=5a=5 不要理解为不要理解为“等号等号”。 执行赋值运算的结果,是将右边的数据

20、存执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。入左边变量所对应的内存单元中。 赋值规则赋值规则 如果赋值运算符两侧的类型不一致,则在赋如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:值时要进行类型转换,转换规则为: 实型实型整变量整变量 舍去小数部分。舍去小数部分。 intint a=5.5; a a=5.5; a中为中为5 5。 整型整型实变量实变量 数值不变,以浮点形式存储。数值不变,以浮点形式存储。 字符型字符型整变量整变量 放在整形变量低放在整形变量低8 8位。保持原值不变原则。位。保持原值不变原则。 intint a=A; a=A; 复合赋

21、值运算符复合赋值运算符 在赋值运算符前加上其它运算符,可以构成在赋值运算符前加上其它运算符,可以构成复合赋值运算符。复合赋值运算符。 a+=3 a+=3 a=a+3 a=a+3 b-=x+5 b-=x+5 b=b-(x+5) b=b-(x+5) x x* *=c-6 =c-6 x=x x=x* *(c-6)(c-6) y/=a y/=a* *4 4 y=y/(a y=y/(a* *4)4) k%=b-2 k%=b-2 k=k%(b-2) k=k%(b-2) 属于高效率运算符。属于高效率运算符。 赋值表达式赋值表达式 主要实现赋值运算的表达式。主要实现赋值运算的表达式。 一般形式:一般形式: =

22、 如:如: a=5 y=2a=5 y=2* *x+3 a=a+1x+3 a=a+1 不是衡等不是衡等作用:作用:将右边表达式的值赋给左边的变量将右边表达式的值赋给左边的变量。 赋值表达式的值取左边变量的值。赋值表达式的值取左边变量的值。 赋值表达式右边的赋值表达式右边的 可以是任何表可以是任何表达式,如:达式,如: a=(b=5) a=(b=5) 赋值表达式中包含赋值表达式赋值表达式中包含赋值表达式 赋值运算符的优先级低于所有算术运算符,赋值运算符的优先级低于所有算术运算符,且是右结合性。且是右结合性。 a=(b=5)a=(b=5) 与与 a=b=5a=b=5 等效。等效。 例:计算以下表达式的值:例:计算以下表达式的值: a=b=c=5a=b=c=5 a=5+(c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6) a=(b=4.5)+(c=6.5) a=(b=4.5)+(c=6.5) (a a、b b、c c为整型变量)为整型变量) a+=a-=aa+=a-=a* *a a (

温馨提示

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

评论

0/150

提交评论