版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目5、长度运算sizeof()返回变量或数据类型的字节长度例如: intx; printf(“%d\n”,sizeof(x)); printf(“%d\n”,sizeof(int));使用长度运算符可以增强程序的移植性,不受具体计算机数据类型长度的限制。C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目6、位运算C语言可用来代替汇编语言完成大部分编程工作,支持位运算就是体现处之一位运算是对字节或字中的实际二进制位进行检测、设置或移位位运算符位逻辑运算符
:&(按位与),|(按位或),^(按位异或),~(取反)移位运算符:<<(左移),>>(右移)必须是char型、int型和它们的变体,不能用于float、double、void或其它更复杂数据类型位运算不改变原操作数的值移位运算a>>b表示将a的二进制右移b位,a<<b表示将a的二进制左移b位,其中a、b均为整型,b为正数
例如,a=12;a=a<<2 00001100 00110000(十进制60) a=12;a=a>>2 00001100 00000011(十进制4)三种移位实现方式(与具体编译器有关):循环移位:移入的位等于移出的位逻辑移位:移出的位丢失,移入的位取0算术移位:移出的位丢失,左移入的位取0,右移入的
位取符号位(常用)移位运算的功能例如:a=15;a=a<<2 00001111 00111100(十进制60) a=16;a=a>>2 00010000 00000100(十进制4)在数据可表达的范围里,左移1位相当于乘2,左移2位相当于乘4(无符号数),右移1位相当于除2,右移2位相当于除4。 a=15;a=a>>1 00001111 00000111(十进制7)练习2下列程序运行后变量z的二进制值是() charx=3,y=6,z; z=x^y<<2;00010100000110110000000000011000B练习3设二进制x数的值是10100011,若要通过x^y使x高四位取反,低四位不变,则y的二进制数是()设二进制x数的值是11001101,若要通过x&y运算使x中低四位不变,高四位清零,则y的二进制数是()1111000000001111C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目7、关系运算关系运算:比较数值之间的关系,返回逻辑量(用零或非零代替)。关系运算符:大于(>),小于(<),等于(==),不等于(!=),大于等于(>=),小于等于(<=),共六种当关系运算符两边的值满足关系时为真,返回1;不满足关系时为假,返回0。例如: intx=10; printf(“%d\n”,x>=9);又如: ‘A’>‘B’输出为1输出为0关系运算的优先级和结合次序关系运算符>,<,>=,<=的优先级相同,如在表达式中同时出现,则自左向右顺序运算。C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目关系运算的优先级和结合次序关系运算符>,<,>=,<=的优先级相同,如在表达式中同时出现,则自左向右顺序运算。例如: printf(“%d\n”,5>3>1);而==,!=优先级低于前四种例如: printf(“%d\n”,11==11<35)关系运算优先级低于算术运算例如: 10>1+12等价于10>(1+12)输出为0输出为0练习定义ch=‘a’;inta=2,b=3,c=1,d,x=10;写出下列表达式的值:a>b==c;d=a>b;ch>’b’+1;d=a+b>c;b-1==a!=c;3<=x<=5;000101C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目8、逻辑运算逻辑运算:用形式逻辑原则来建立数值间关系,运算对象和运算结果均为逻辑量。任何非零的数均表示逻辑真,零表示逻辑假。逻辑运算符:与(&&),或(||),非(!),共三种。真值表PQP&&QP||Q!P00001010111001011110逻辑运算的优先级&&优先级高于||例如:a||b&&c等价于a||(b&&c)!的优先级高于&&例如:!a&&b等价与(!a)&&b逻辑运算优先级低于关系运算例如:ch>=‘a’&&ch<=‘z’等价于(ch>=‘a’)&&(ch<=‘z’)逻辑运算的例子写出满足下列条件的c语言表达式1)ch是空格或回车2)number是偶数3)year是润年,即year能被4整除但不能被100整除,或year能被400整除。4)判断ch是否为英文字符ch==‘’||ch==‘\n’number%2==0(year%4==0&&year%100!=0)||(year%400==0)(ch>=‘a’)&&(ch<=‘z’)逻辑运算逻辑表达式求解中,并非所有逻辑运算符的操作数都被执行,只是在执行下一个操作数才能求出表达式的值时才执行下一个操作数。例如:a||b,当a为真不再求b,直接取值为真。 a&&b,当a为假不再求b,直接取值为假。逻辑运算间可以转换例如:!(a||b)可写成!a&&!b !(a&&b)可写成!a||!b练习1要求当A的值为奇数时,表达式的值为真,A的值为偶数时,表达式的值为假,以下不满足要求的表达式是:A%2==1!(A%2==0)!(A%2)A%2C练习2能正确表示a和b同时为正或同时为负的逻辑表达式是()A)(a>=0‖b>=0)&&(a<0‖b<0) B)(a>=0&&b>=0)&&(a<0&&b<0)C)(a+b>0)&&(a+b<=0) D)a*b>0
D练习3若intx=3,y=-4,z=0;则表达式(x&&y)==(x||z)的值是() z||x-3&&y的值是()10练习4设inta=3;结果为0的表达式为()A)2%aa/=a!a~aCC语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目9、条件运算条件运算符?:条件表达式的一般形式:表达式1?表达式2:表达式3;运算过程:先计算表达式1的值,如果为真(非0),将表达式2的值作为条件表达式的值,否则,将表达式3的值作为条件表达式的值用法:例如:求出a、b中最大值,再赋给z z=(a>b)?a:b优先级位于逻辑运算和赋值运算之间,结合顺序由右至左例如:a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d)C语言运算符及优先次序优先级运算符特征1(),[],.,->双目2!,~,(t),+(正号),-(负号),*,&(取地址),++,--,sizeof单目34*,/,%,+,-双目5<<,>>67<,<=,>,>=,==,!=8910&,^,|1112&&,||13?:三目14=,+=,-=,*=,/=,%=,&=,^=,|=;>>=;<<=双目15,双目10、顺序求值运算“,”逗号既可做分隔符,也可作运算符。逗号做分隔符用于分隔说明语句中的变量或函数中参数。例如:inta,b,c; printf(“%d%d”,a,b);逗号作运算符使用,将若干独立表达式连接在一起,组成逗号表达式,一般形式为:
表达式1,表达式2
运算时,先计算表达式1的值,再计算表达式2的值,将表达式2的值作为整个表达式的值,因此也称为顺序求值运算符。练习1写出下列代码段的结果: inta1,a2,b=2,c=7,d=5;
a1=(++b,c--,d+3);
a2=++b,c--,d+3; printf(“%d,%d\n”,a1,a2);8,4本章内容提要常量、变量和数据类型输入与输出格式C语言中的运算结构化的程序设计思想结构化程序设计思想(§2.5.2)程序的质量标准初期:程序占用内存容量的大小和运行时间长短现今:具有良好的结构,容易理解和阅读结构化程序设计方法
强调程序设计的风格和程序结构的规范化,提倡清晰的结构,其基本思路是将一个复杂问题的求解过程划分为若干阶段,每个阶段要处理的问题都容易被理解和处理。结构化程序设计方法的核心“自顶向下,逐步细化,模块化”结构化编码1.自顶向下的分析方法把大的复杂问题分解成小问题后再解决。面对复杂问题,首先进行上层(整体)分析,按组织或功能,将问题分解为子问题,如果子问题仍然复杂,再做进一步分解,直到处理对象相对简单,容易处理为止。当所有子问题都解决了,整个问题就解决了。每一次分解都是对上一层问题进行细化和逐步求精,最终形成类似树形的层次结构,来描述分析的结果。学生成绩统计程序的层次结构图开发一个学生成绩统计程序,输入一批学生的5门课程的成绩,要求输出每个学生的平均分和每门课程的平均分,找出平均分最高的学生。学生成绩统计程序成绩输入数据计算数据查找输出成绩计算学生平均分计算课程平均分2.模块化设计将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成最具体的功能。模块可以是一条语句,一个程序段,或一个函数。遵循模块独立性的原则,即模块之间的联系应尽量简单。一个模块只完成一个指定的功能。模块之间只通过参数进行调用。一个模块只有一个入口和一个出口。模块内慎用全局变量。学生成绩统计程序的层次结构图开发一个学生成绩统计程序,输入一批学生的5门课程的成绩,要求输出每个学生的平均分和每门课程的平均分,找出平均分最高的学生。学生成绩统计程序成绩输入数据计算数据查找输出成绩计算学生平均分计算课程平均分3.结构化编码按照结构化程序设计的观点,任何功能的程序都可以通过三种基本结构的组合来实现,即顺序、分支和循环。顺序控制结构:一个程序模块执行完后,按自然顺序执行下一个模块。分支(选择)控制结构:根据不同的条件选择要执行的模块。循环控制结构:反复执行某些相同的处理过程。
每一个结构可以包含若干条语句和其它基本结构。4、流程图:开始或结束:输入或输出:处理框:连接点:流程线程序流程图的基本符号:判断框ABBYPNABPNY(a)顺序结构(b)简单分支结构(c)选择分支结构(d)当型循环APYNAPYN(e)直到型循环基本的程序流程图4.c语句分类根据结构化程序设计的三个模块分为:用于顺序结构的:表达式语句(表达式后加一分号)用于分支结构的:if语句、switch语句用于循环结构的:while语句、for语句、do-while语句根据c语言的句法分为:单个语句复合语句:用一对“{}”,将若干语句顺序组合在一起就形成了一个程序段。空语句:仅一分号构成的语句5.程序书写的风格对变量、函数、常量等命名时,要见名知意,有助于对变量含义或函数功能的理解。在程序中增加必要的注释,增加程序的可读性。程序要清晰易懂,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Lesson43-44(课件)-新概念英语第一册
- 神经调节的基本方式课件-高二上学期生物人教版选择性必修
- 学校采购箱包合同范本
- 承接鞋材加工合同范本
- 承接钢材供应合同范本
- 房屋解除买卖合同范本
- 小微企业贷款合同范本
- 承接焊工加工合同范本
- 房产开发转让合同范本
- 店面临时租用合同范本
- 冬季高速公路安全培训
- 感应加热器安全操作规程
- 音乐与乐器的声学原理
- 《网络与信息安全管理员》三级考试题库(含答案)-20230926094641
- JSA临时用电作业安全分析表
- 内镜室医生护士职责
- 2023年新高考I卷英语试题讲评课件-2024届高考英语一轮复习
- 提高铝模板施工质量合格率
- MT/T 106-1996顺槽用刮板转载机通用技术条件
- GB/T 6672-2001塑料薄膜和薄片厚度测定机械测量法
- GB/T 4139-2012钒铁
评论
0/150
提交评论