C语言使用的基本表达式.ppt_第1页
C语言使用的基本表达式.ppt_第2页
C语言使用的基本表达式.ppt_第3页
C语言使用的基本表达式.ppt_第4页
C语言使用的基本表达式.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

共 56 页 第 1 页 C语言使用的基本表达式有: 赋值表达式,如:a=3 算数表达式,如:3+4*2 关系表达式,如:32 逻辑表达式,如:35 -9/2=-4; %是取余数运算符,只能作用于两个整数。运算结果的符号 与被除数的符号一致。 9%2=1 ; -9%2=-1 ; 9%-2=1; 共 56 页 第 3 页 符号说明优先级结合性算术表达式 + - 单目取正 单目取负 14 14 从右到左a=+8 b=-a * / % 乘 除 取余 13 13 13 从左到右a=12*5.5 b=14/6.5 c=12%5 + - 加 减 12 12 从左到右a=15+8.5 b=18-8.5 基本算术运算符 共 56 页 第 4 页 运算符属性:运算符属性: (1) 优先级 当若干个运算符同时出现在表达式中时,优先级规定了 运算的先后次序。优先级有15级。 C语言把圆括号作为运算符,规定它的优先级最高,规 定为15级,从而保证优先运算圆括号内的式子,逗号运算符 的级别最低,规定为1级。 (2) 结合性 当若干个具有相同优先级的运算符相邻出现在表达式中 时,结合性规定了运算的先后次序。分为“从左到右”和“ 从右到左”两个结合方向。 大多数运算符的结合方向”从左到右”; 单目运算符、赋值运算符和条件运算符的结合方向”从右 到左”(单目运算符是指作用于一个操作对象的运算符)。 共 56 页 第 5 页 例: 将下列数学表达式: 写成符合C语语言规则规则 的表达式如下: (a+b+c)/(sqrt(a)+b*( sin(x)+sin(y)+sin(z) 其中sqrt(a)和sin(x)、sin(y)、sin(z)都 是数学函数的引用,表达式中用了三层 括号,以保证表达式的运算顺序。 共 56 页 第 6 页 2.3.2 赋值运算符和赋值表达式 1.一般赋值运算符:= 赋值表达式: 由赋值运算符将一个变量和一个表达式连接起来的 式子。 形式: 变量名=常量或表达式 作用: 将右边常量或表达式的值赋给左边的变量。 例: a=3 共 56 页 第 7 页 2.3.2 赋值运算符和赋值表达式 说明: (1) 赋值后,原来左边的值被右边表达式的值替换; (2) 如果右边表达式的值的类型与左边变量的类型不一 致,以左边变量的类型为准,将表达式值的类型转换 为左边变 量的类型。 (3) 结合方向“从右向左”。 例: x=y=a+b 等价 x=(y=a+b) (4) 左边变量的值作为整个赋值表达式的值. x=y=3+4 (值为7) (5)赋值表达式加上分号, 称为赋值语句. 如:x=a+5; 共 56 页 第 8 页 例: main() int a; double b=3.5; a=b+2.1; printf(“a=%d”,a); 共 56 页 第 9 页 2. 复合赋值运算符 复合赋值运算符:在赋值符“=”之前加上其它运算 符。常见的有: += ,=, 复合赋值运算 的功能:与左边的变量进行复合运 算后再赋给左边变量。 共 56 页 第 10 页 如: a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8) x%=3 等价于 x=x%3 共 56 页 第 11 页 2. 复合赋值运算符 例:int a=1, b=2, c=2; double x=1.5,y=2,z=2; c*=a-b; c的值? -2 int型 z-=x+y; z的值? -1.5 double型 共 56 页 第 12 页 2.3.2 赋值运算符和赋值表达式 例: 已知: int a, b=5, c=4 计算表达式 a-=a=b+c 的值。 解: a-=a=b+c a-=(a=b+c) a=a-9 9 a 0 0a 共 56 页 第 13 页 2.3.3 2.3.3 逗号运算符和逗号表达式逗号运算符和逗号表达式 1.逗号运算符:即“,” 优先级:为所有运算符中级别最低的(15)。 2.逗号表达式 形式:表达式1,表达式2,表达式n 求解过程:顺次求解表达式1,表达式2 最后求解表达式n。 逗号表达式的值为表达式n的值。 结合性:左结合 例如:a=3*5,a*4 a=3*5,a*4,a+5 x=(a=4%3 , a+1, a*10) 60 20 10 共 56 页 第 14 页 2.4 、 各类数值型数据间的混合运算 一、运算过程: 先自动转换成同类数据,再进行运算。 二、转换规则: 低字节类型转换成高字节类型。 doublefloat long unsigned intchar,short 向左的横向箭头表示即使在 同一种数据类型间进行运算时 也要进行转换。用于提高精度 。 向上纵向箭头表示当运算对 象类型不同时的转换方向。 共 56 页 第 15 页 例:若有: int i ; float f ; double d ; long e ; 试判断表达式 3 +b +i*f - d/e 的类型 int unsigned int long int unsigned long int double short , char float系统自动转换 3/4 ? 3.0/4 ? 1/2*15*20 ? 1.0/2*15*20 ? 共 56 页 第 16 页 强制类型转换 将指定表达式的值转换为指定类型. 形式:(类型名)(表达式) 例如:( double) (a+b) 说明: () 表达式应用括号括起 例如: (int)(x+y) ; (int)x+y; () 在强制类型转换时,得到一个所需类型的中间变 量,原来变量类型未发生变化。 例如:float x=8.6 ; int y; y=(int)x ; 共 56 页 第 17 页 运算符说明: + + 自增, 变量值加 1 自减, 变量值减 1 2.5 自增、自减运算符 共 56 页 第 18 页 自增(或自减)运算符的第一种用法: 单独作为一个表达式语句被使用 2.5 自增、自减运算符 i=i+1; i+ ; 或 +i ; i=i-1; i- - ; 或 -i ; 共 56 页 第 19 页 自增运算符的另一种用法: 出现在其他表达式中,参与运算。 + + i、 i 先使i的值加(减)1, 再使用 i i + +、 i 在使用 i 之后, 使 i 的值加(减)1 2.11 自增、自减运算符 共 56 页 第 20 页 2.11 自增、自减运算符 举例: int j,i=3; j=+i; /* i, j 的值为4*/ j=i+; /*j的值为4,然后i的值变为5 */ j=-(i+); /*j的值-5,然后i的值变为6 */ i+; /* i=i+1; i为7*/ j-; /* i=i-1; */ j=-(i+) j=(-i) i=i+1 共 56 页 第 21 页 2.5 2.5 自增、自减运算符 (、)自增、自减运算符 (、) 说明: (1)+、- 为单目运算符。 (2)+ 、 - 只能用于变量,而不能用于常量或表达式。 例如:10+,(x+y)+ ,+a是非法的. (3)自增、自减运算符为右结合性(即自右至左)。 例如:a+ (a+) 共 56 页 第 22 页 2.5 2.5 自增、自减运算符 (、)自增、自减运算符 (、) 例如: a=4; b=-a+ ; /* a的值为 5, b的值为 4 */ 共 56 页 第 23 页 main() int x, y, z; x=2; y=5; z=x; x=y; y=z; printf(“x=%d, y=%dn“, x, y); z2 2x 25 y x 55x y y2 z 2 共 56 页 第 24 页 #include “stdio.h“ main() int x=6,y=7,z; z=x; x=y; y=z; printf(“x=%d,y=%dn“,x,y); getchar(); 共 56 页 第 25 页 #include “stdio.h“ main() int x,y,z; scanf(“%d%d“, z=x; x=y; y=z; printf(“x=%d,y=%dn“,x,y); getchar(); getchar(); 库函数名写错, 连接时出错。 共 56 页 第 26 页 #include “stdio.h“ main() int x, y,

温馨提示

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

评论

0/150

提交评论