程序设计基础ch2课件_第1页
程序设计基础ch2课件_第2页
程序设计基础ch2课件_第3页
程序设计基础ch2课件_第4页
程序设计基础ch2课件_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 运算符与表达式学习目标 学会使用基本运算符 理解运算符的优先级和结合性规则 学会使用加一、减一运算符 学会使用赋值运算符 学会使用条件表达式 学会使用位运算符 理解类型转换7/28/20221程序设计基础 张杰敏2.1 程序设计的数据 迄今为止,所有冯诺依曼结构的计算机都由以下5个部分组成: 输入设备 负责把用户的程序和数据输入到计算机的存储器中。 输出设备 负责从计算机中取出程序执行结果或其他信息,供用户查看。 存储器 是实现记忆功能的部件,负责存储程序和数据。 运算器 负责数据的算术运算和逻辑运算,即数据的加工处理。 控制器 负责对程序规定的控制信息进行分析、控制并协调输入、输出操

2、作或内存访问。7/28/20222程序设计基础 张杰敏2.1 程序设计的数据类型 数据特征的抽象地址、值 数据的存储运算符、表达式、函数 数据的加工生存期、作用域 数据的存在赋值、输入/输出 数据的传输7/28/20223程序设计基础 张杰敏2.2 基本运算符二元算术运算符包括加、减、乘、除、取模运算5种,分别用符号+、-、*、/、%表示由算术运算符连结的表达式称为算术表达式 关系运算用来比较大小、确定运算分量的大小关系。C语言的关系运算符包括: = = = = !=关系运算符连结的表达式称为关系表达式。关系表达式只有一个逻辑值,即“真” 或“假”。逻辑运算符包括逻辑与、逻辑或和逻辑非,分别用

3、符号&、| 和 !表示。 其中&和| 是二元的,!是一元的。逻辑运算符连结的表达式称为逻辑表达式。逻辑表达式也只有一个逻辑值,即“真”或“假” C语言没有逻辑型数据,定义以int型值1代表“真”, int型值0代表“假” 7/28/20224程序设计基础 张杰敏2.3 类型转换当表达式中出现多种不同类型的数据时,C语言将依据一定规则把它们转换成某个共同的类型,然后进行计算-隐式转换 简单的规则:在各类型间实行由低向高的转换。下式箭头方向表示数据类型间由低到高的排列顺序: long double double float unsigned long long unsigned int int (

4、类型名)(表达式) 表达式被转换成由类型名所指明的类型 -强制类型转换 强制类型转换还是自动转换,需要转换的变量事实上将产生一个符合转换要求的中间变量参与计算,变量本身的类型和值不发生变化 7/28/20225程序设计基础 张杰敏【例2-1】数值非0取逻辑值1,数值为0取逻辑值0。 #include void main() int i = 1; float f = 1.5f; if (f&i ) printf(f = %fti = %dt,f,i); printf(nBoth f and i are turen); i = 0; if(!i) printf(ni = %d,i); printf

5、(ni is falsen); 7/28/20226程序设计基础 张杰敏运行结果:7/28/20227程序设计基础 张杰敏【例2-2】计算圆周长和面积,运算结果为float型。 #include #define PI 3.1415 void main() float r,size,area; printf(r = ); scanf(%f,&r); size = 2*r*PI; area = r*r*PI; printf(size = %fn,size); printf(area = %fn,area); 7/28/20228程序设计基础 张杰敏运行结果:7/28/20229程序设计基础 张杰敏

6、【例2-3】计算圆周长和面积,运算结果为int型。 #include #define PI 3.1415 void main() double r; int size,area; printf(r = ); scanf(%lf,&r); size = 2*r*PI; area = r*r*PI; printf(size = %dn,size); printf(area = %dn,area); 7/28/202210程序设计基础 张杰敏运行结果:7/28/202211程序设计基础 张杰敏2.4 加1与减1运算符两个特殊的运算符+和- ,+运算符使运算分量加 1,-运算符使运算分量减 +与-既可

7、以作前缀运算符,也可作后缀运算符,只用在变量前面或后面作前缀运算符与作后缀运算符,其结果其效果是不同的。+i在i的值被使用之前先使i加1;i+则是在i的值被使用之后再使 i加1 ,-i在i的值被使用之前先使i减1;i-则是在i的值被使用之后再使 i减1 7/28/202212程序设计基础 张杰敏2.5 赋值运算符与赋值表达式使用赋值语句可以改变变量的值一般语法形式为:变量 = 表达式;赋值表达式结尾加“;”,使其成为赋值语句 “=”称为赋值运算符,代表赋值操作,将赋值运算符右边表达式的值赋给左边的变量如果赋值运算符两端的类型不一致,则会发生类型转换 赋值运算符的结合规则为自右向左,其优先级只高

8、于逗号运算符,而低于其它运算符 值运算符可与其它的运算符一起构成复合赋值运算符,C语言的复合赋值运算符有以下10种,其中后5种有关位运算:+=、-=、*=、/=、%=、=、&=、=、|=将在2.7中介绍7/28/202213程序设计基础 张杰敏2.4 赋值运算符与赋值表达式表2.2 赋值表达式的计算过程声明和初始化int i=1, j=2, k=3, m=4表达式等价表达式等价表达式等价表达式值i+=j+ki+=(j+k)i=( i+( j+k)6 j*=k=m+5j*= k=(m+5)j*=( k=( m+5)j=(j* ( k=( m+5) )18i+=i-=i+2i+=i=(i-( i+

9、2)i+=(i=(i-( i+2)i=(i+(i=(i-( i+2)-4注意:在表达式i+=i-=i+2中,变量i被赋值过2次。7/28/202214程序设计基础 张杰敏2.6 条件运算符和逗号运算符条件表达式的一般语法形式是: 表达式1?表达式2:表达式3首先计算表达式1 ,如果其值不等于0(即为真),则计算表达式2 的值,此时条件表达式的值等于表达式2的值;否则计算表达式3的值,并以该值作为条件表达式的值。在表达式2 与表达式 3中,只有一个会被计算到。条件运算符?:遵从自右向左的结合规则,其优先级高于赋值运算符而低于关系运算符 如:条件表达式:y z ? y : z 的值 ,当yz时,为

10、y,否则为z。7/28/202215程序设计基础 张杰敏【例2-5】求a,b,c中最大的数。#include void main()int a,b,c;int max;scanf(a=%d,b=%d,c=%d,&a,&b,&c);max = (ab?a:b);max = (maxc?max:c);printf(max=%dn,max); 7/28/202216程序设计基础 张杰敏运行结果:7/28/202217程序设计基础 张杰敏2.7 位运算符位运算是指对运算分量按二进制位进行的运算 C语言提供了六个用于位操作的运算符: & 按位与(AND) | 按位或(OR) 按位异或(XOR) 右移 求

11、反码(一元运算符)这些运算符只能作用于整数型分量,包括unsigned或signed的char、short、int与long型,不能作用于浮点型分量 优先级7/28/202218程序设计基础 张杰敏2.7 位运算符-规则aba&ba|baba001101010001011110011100 (右移)的运算规则是:将运算分量的每个二进制位向右移动若干位,从右边移出去的低位部分被丢弃 当右移无符号分量时,左边空出的高位部分用 0填充;当右移有符号的分量时,填充位与具体的机器有关 ,用符号位填充,称为 “算术移位”或用 0填充,称为 “逻辑移位” 7/28/202219程序设计基础 张杰敏2.8 运

12、算符优先级所有运算符的优先级和结合性规则,包括尚未讨论过的一些运算符及其规则 ,用图表说明一元运算符较二元运算符有较高的优先级别 ,特别是+和-,既能是一元运算符,也可以是二元运算符要注意它的用法7/28/202220程序设计基础 张杰敏2.8 运算符优先级运 算 符结合性() - .自左向右 ! + - +(一元) -(一元) * & (类型) sizeof自右向左 * / %自左向右+ - 自左向右自左向右 = 自左向右= != 自左向右&自左向右自左向右|自左向右&自左向右|自左向右?:自右向左= += -= *= /= &= = |= = 自右向左,自左向右7/28/202221程序设计基础 张杰敏2.9 编程指导 在二元运算符的两边各放一个空格字符,可使运算组合更清楚,提高程序的可读性 对于复杂的算术表达式使用括号,有时尽管不必要,但能够使这个表达式更

温馨提示

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

最新文档

评论

0/150

提交评论