5-表达式和运算符.ppt_第1页
5-表达式和运算符.ppt_第2页
5-表达式和运算符.ppt_第3页
5-表达式和运算符.ppt_第4页
5-表达式和运算符.ppt_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

1、2.9 运算符与表达式,运算是对数据进行加工的过程,用来表示各种不同运算的符号称为运算符。 表达式:是用运算符与圆括号将操作数连接起来的式子。,C运算符(共有13类),1. 基本算术运算符 + / %,3. 逻辑运算符 ! x+y-(y-x) 的解是24,再对表达式求值时,先按运算符的优先级别高 低次序执行,再按运算符的结合方向进行结合。,例如:a+b*c-2,练习,函数f(x)=3x3+2x2+x+1,编写一程序计算并输出f(3),解题步骤: 1、定义整型变量x,y 2、从键盘输入自变量的值存放在变量x中 3、计算函数值 4、输出函数值,5、强制类型转换运算符,强制类型转换将一个算术表达式转

2、换为所需类型。,形式: (类型名) (表达式),例如: (double) a 将a转换为double,(int) (x+y) 将x+y转换为int,(float) (5%3) 将5%3转换为float,注: 括号不能省略。 否则: int x 会理解为变量int x.,又如: (int) (x+y) 若省略: (int)x+y会变成只将x转成整型.,例如: (double)a /*将变量a的值转换成double型*/ (int)(x+y) /*将x+y的结果转换成int 型*/ (float)5/2 /* 将5转换成实型,再除以2(=2.5),等价于(float)(5)/2 */ (float

3、)(5/2) /* 将5整除2的结果转换成实型(2.0) */,转换后的类型数据由系统分配一个中间变量存放,而原变量类型不变。 若有: float x;,则: (int)x; x本身仍为实型,而(int)x由一个中间变量(整)存放原来x的整数部分。,注意:,练习:,从键盘上输入一个球的半径值,计算并输出这个球的体积。 球的体积公式为:V=4/3r3,#include”stdio.h” #define PAI 3.1415926 main() float r, v; scanf(“%f”, ,4.0/3*PAI*r*r*r;,二、赋值运算符和表达式 简单赋值运算符 符号: = 格式: 变量标识符

4、=表达式 作用:将一个数据(常量或表达式)赋给一个变量,复合赋值运算符 种类:+= -= *= /= %= = = d=func(); c=d+2;,说明: 结合方向:自右向左 左侧必须是变量,不能是常量或表达式,赋值表达式的值与变量值相等,且可嵌套,赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型,例 3=x-2*y; a+b=3;,例 float f; int i; i=10; f=i; 则 f=10.0,例 int i; i=2.56; /结果i=2;,例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),/表达式

5、值为5,a,b,c值为5,/ b=5;a=5,/表达式值11,c=6,a=11,/表达式值10,a=10,b=4,c=6,/表达式值5,a=5,b=10,c=2,练习:,#include main() int a,b,c,x,y; a=2; y=x=2*a+6; printf(“n a=%d”, a); printf(“n x=2*a+6 is %d”, x=2*a+6); printf(“n y=%d”, y); c=b=a=4; printf(“nb=a=4 is %d ”, b=a=4); printf(“na=%d,b=%d,c=%d ”, a, b,c); ,三、不同类型数据间的转换

6、,例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+a+fabs(-5)=?,但有一个规则:先转换成同一类型,再计算。,C语言允许双精度、单精度、整型及字符数据之间混合运算是允许的。,图中“ ” 表示必定转换。如a + b,先转换为int。结果为 int。,即: 既使是同一种类型也按 转换。,图中“ ” : 表示低, 高型数据运算时,均先转换为高型。,解析:,float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5),12.0/3,5,4.0 - 1.5,2.5 + 97(int),99.5 + 5,10

7、4.5(double),例 int i; float f; double d; long l;,练习,已知:float a=2.0; int b =6,c =3; 试编写程序计算: a*b/c +1.5 +a +fabs(-5.75),四、关系运算符,1、6种关系运算符:= = != 2、关系表达式:用关系运算符将表达式连接起来的式子 优先级: (= ) ( = != ) 结合性:自左至右; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。,35 的值为 0;32 的值为0; 3+(43 的值为1。 算术运算符优先级高于关系运算符 关系运算符优先级高于赋值运算符,例 int a=3,b

8、=2,c=1,d,f; ab (ab)=c b+cb f=abc,例 若a=0; b=0.5; x=0.3; 则 a=x=b的值为,例 5278在C中是允许的, 值为,例 a0 结果为 A100 结果为,实例,1,0,0,0,例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为 可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,0,#include stdio.h void main() int x,y,z1,z2; x=2 ;y=2 ; z1=(x=y); z2=(x=y); printf(%d,%dn,z1,z2); ,练习,五、逻辑运算符 及其表达式

9、,C语言中的逻辑运算符有三个: 逻辑与 i=3; j=i+; j=+i; 结果 j的内容为3 j的内容为4 i的内容为4 i的内容为4,注意: 增1/减1运算符的优先级高于算术运算符, 与单目运算符-(取负)、!(逻辑非)的 优先级相同,结合方向自右至左。 例如表达式 -i+ 等价于 -(i+) 副作用:printf(“ %d ,%d”,i,i+);在不同 的编译环境下结果有可能不同。 尽量不要在一般的表达式中将增1/减1运算 符与其它运算符混合使用。,请写出如下程序的输出: #include main( ) int i=3,j; j=-i+; printf(i=%d,j=%dn,i,j);

10、,练习,七、 位逻辑运算符, w1=10; w2=8; w3= w1|w2 ; w3的内容可以通过下式运算: 00001010 00001000 (按位或 |) 00001010 (结果),按位异或 按位或的运算规则是: 0 0=0 0 1=1 1 0=1 1 1=0 例如: char w1,w2,w3; w1=10; w2=8; w3= w1w2 ; w3的内容可以通过下式运算: 00001010 00001000 (按位异或 ) 00000010 (结果),按位取反 按位取反的规则是: 0 = 1 1 = 0 注意: 对于位逻辑反来说,0 x7在16位机上的 表示是111111111111

11、1000即0 xfff8,但在32位 机上的表示是0 xfffffff8,所以通常用0 x7 来表 示7的逻辑非,而不用0 xfff8或oxfffffff8。,移位运算符 左移 双目运算符,运算符右边的表达式表示移位的位数。 x=x2 表示把x进行左移以后赋值给x, 注意 不能只用x2 左移可以扩大原数的倍数,左移位扩大 倍,左移位扩大倍,。右移可以缩小 原数的倍数。右移时,若符号位为,则右边 填零。若符号位为,根据机器不同分为算术 移位(填充)逻辑移位(填充)。,八、 逗号运算符,形式:表达式1,表达式2, ,表达式n 结合性:从左向右 逗号表达式的值:等于表达式n的值 用途:常用于循环fo

12、r语句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,例: #include main() int x,y=7; float z=4.0; x=(y=y+6,y/z); printf(x=%dn,x); ,运行结果:x=3,九、求字节数运算符

13、sizeof是一个比较特殊的单目运算符,也 是一个非常有用的运算符,经常用于动态分 配空间。 其语法格式为: sizeof(表达式) 表达式可以是变量名、常量、以及数据 类型名。,它的功能是: 1、求表达式中变量名所代表的存储单元所占的字节数; 2、求表达式中常量的存储单元所占的字节数; 3、求表达式中的数据类型表示的数据在内存单元中所占的字节数。 sizeof(int)的结果是2, sizeof运算符比较灵活,同样是求整型int 数据所占的字节数,可以使用三种办法: (1) 求sizeof(int) (2) 求sizeof(10) (3) 使用int a; 求sizeof(a),实例 求各种有数据类型在内存中所占的位(bit)数。 #include stdio.h void main(c) printf(char =%d bitn,8*sizeof(char); printf(short int =%d bitn,

温馨提示

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

最新文档

评论

0/150

提交评论