版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计
运算符与表达式3.1运算符和表达式概述 3.2算术运算符和算术表达式 3.3赋值运算符和赋值表达式3.4关系运算和逻辑运算 3.5位运算符 3.6条件运算符和条件表达式 3.7其他运算符 3.8表达式的求值规则
3.1运算符和表达式概述1.运算符,C语言的运算符有以下几类。算术运算符。加(+)、减(-)、乘(*)、除(/)、求余(%)五种。关系运算符。>、<、==、>=、<=和不等于(!=)六种。逻辑运算符。包括与(&&)、或(||)、非(!)三种。赋值运算符。简单赋值(=)、复合赋值(+=、-=、*=、/=、%=)六种。
条件运算符,用于条件求值(?:),这是一个三目运算符。逗号运算符,用于把若干表达式组合成一个表达式(,,,)。指针运算符,用于取内容(*)和取地址(&)二种运算。求字节数运算符(sizeof)强制类型转换运算符(类型)分量运算符(.→)下标运算符([])2.表达式用运算符和括号将运算对象(常量、变量和函数)连接起来的、符合C语言语法规则的式子,称为表达式。赋值表达式,如:a=1算术表达式,如:1*2+3/4.5关系表达式,如:5>9逻辑表达式,如:8>4&&a<b条件表达式,如:a>b?a:b逗号表达式,如:a=1,b=2,c=33.运算符的优先级与结合性运算符的优先级别就是运算对象(或称操作数)两侧运算符执行的先后顺序。C语言运算符的结合方向,就是指当一个运算对象两侧的运算符具有相同的优先级别时,该运算对象是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。3.2算术运算符和算术表达式例3-3取余运算。#include<stdio.h>voidmain(){printf("%d\n",100%6);}双目运算,具有左结合性。求余运算符%要求参与运算的量均为整型。例3-3输出100除以6所得的余数4。2.算数运算符的优先级与结合性在表达式求值时,先按运算符的优先级别高低次序执行,例如,先乘除取余后加减。如表达式a-b*c,b的左侧为减号,因此相当于a-(b*c)。如果在一个运算符对象两侧的运算符的优先级别相同,如a-b+c则按规定的”结合方向”处理.算术运算符的结合方向是“自左至石”,是左结合性。如在执行“a-b+c”时,减号和加号运算的优先级别相同,变量b先与左边的减号结合,执行“a-b”;然用再执行右侧加c的运算。3.数据类型转换整型、实型和字符型数据间可以混合运算。一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,先将数据自动转换成同一类型,然后进行运算。因此,整型、字符型、实型数据可以出现在一个表达式中进行混合运算。如:已定义i为int变量,f为float型变量,d为double型变量,l为long型变量,有下面式子:100+’A’+i*f-d*l在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算,转换的规则如图3-1所示。(1)隐式转换①整型提升,整型、浮点型可以混合运算。整型自动转换遵循以下规则:若参与运算的量类型不同,则先转换成同一类型,然后进行运算;②算数转换,所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,横向自动转换后再作运算。(2)强制类型转换其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如:(float)a把a转换为实型、(int)(x+y)把x+y的结果转换为整型。3.数据类型转换例3-4数据类型强制转换。#include<stdio.h>voidmain(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=34.自增和自减运算两个特殊的算术运算符,即自增、自减运算符(++和--)。
整型变量i,可有以下几种形式:++i的功能是i自增1后再参与其它运算。--i的功能是i自减1后再参与其它运算。i++i参与运算后,i的值再自增1。i--i参与运算后,i的值再自减1。
自加自减运算符的结合性是自右向左的。
例3-5自加、自减运算符。#include<stdio.h>voidmain(){inti=5,j=5,p,q;p=(i++)+(i++)+(i++);q=(++j)+(++j)+(++j);printf("%d,%d,%d,%d",p,q,i,j);}3.3赋值运算符和赋值表达式
赋值运算符有“=”、“+=”、“-=”、“*=”、“/=”和“%=”等。
用赋值运算符将运算对象连接而成的表达式称为赋值表达式。1.简单赋值运算符将“=”右边表达式的值赋给左边的变量。例如:a=8;s=a*2+b;先计算出右边表达式的值,再赋给左边的变量。如果“=”左右两边类型不同,系统会按照赋值类型转换的原则将右边的类型转换成左边的类型。运算符应用举例等价形式+=a+=xa=a+(x)-=a-=xa=a-(x)*=a*=xa=a*(x)/=a/=xa=a/(x)%=a%=xa=a%(x)2.复合赋值运算符在简单赋值运算符前面加上算术运算符就构成复合算术赋值运算符,如下表所示:3.赋值表达式
由赋值运算符将一个变量和一个表达式连接起来的式子所组成。一般形式为:
变量=表达式赋值表达式:v=4.0*PI*r*r*r/3.0a=15+(i=6)b=(x=3)+(y=4)
赋值表达式的执行过程是:
(1)计算赋值运算符右侧表达式的值;
(2)将所计算出的值赋给赋值运算符左侧的变量。3.4关系运算和逻辑运算
例3-6运算符综合应用。运行输出:a=1,b=10,c=10a==(…):0a=1,b=20,c=11a=0,b=22,c=12#include<stdio.h>voidmain(){inta,b,c;a=b=c=10;a=b==c;printf(″a=%d,b=%d,c=%d\n″,a,b,c);printf(″a==(…):%d\n″,a==(b=c++*2));printf(″a=%d,b=%d,c=%d\n″,a,b,c);a=b++>=++b>c++;printf(″a=%d,b=%d,c=%d\n″,a,b,c);}2.逻辑运算符
逻辑非“!”、逻辑与“&&”、逻辑或“||”。优先级别是:!(非)→&&(与)→||(或)例3-7逻辑运算符。#include<stdio.h>voidmain(){inti=7,m,n;m=!!i;n=(3<i<6);printf(″i=%d,m=%d,n=%d\n″,i,m,n);}运行:i=7,m=1,n=13.5位运算符 3.5位运算符 3.6条件运算符和条件表达式 1.条件运算符条件运算符由两个符号“?”和“:”组成,用于条件求值。条件运算符的优先级低于逻辑运算符、高于赋值运算符,它是右结合的。2.条件表达式其一般形式为:表达式1?表达式2:表达式3条件表达式的执行顺序:
若表达式1的值为“真”,则条件表达式的值为表达式2,否则,条件表达式的值为表达式3例3-8运算符应用。#include<stdio.h>voidmain(){inta,b,c;a=b=c=1;a+=b;b+=c;c+=a;printf(″(1)%d\n″,a++>b?a:b);printf(″(2)%d\n″,a>b?c>a++:b-->a?c++:c--);(a>=b>=c)?printf(″AA\n″):printf(″BB\n″);printf(″a=%d,b=%d,c=%d\n″,a,b,c);}运行:(1)2(2)0BBa=4,b=2,c=33.7其他运算符 1.逗号运算符
其一般形式为:表达式1,表达式2,…表达式n其求值过程是分别求两个表达式的值,并以表达式n的值作为整个逗号表达式的值。“,”运算符用于将多个表达式串在一起,“,”运算符的左边值总不返回,最右边表达式的值才是整个表达式的值。2.sizeof运算符sizeof运算符是一个单目运算符,它返回变量或类型的字节长度。不同系统定义不同的字节长度,所以不同系统会得到不同结果。例如:sizeof(d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年水电站发电权承包经营协议3篇
- 2025年度选矿厂矿产资源开采承包合同示例3篇
- 2025年新婚姻法离婚协议书婚姻法律专家团队服务合同2篇
- 2025年绿色能源开发项目投资合作协议范本3篇
- 二零二五版海洋工程设备采购预付款担保服务协议3篇
- 2025年旺铺门面租赁合同(含节假日临时摊位租赁及物业费减免优惠)11篇
- 二零二五版电子商务平台合作授权分销合同3篇
- 2025年特种航空器买卖合同模板及国际法规2篇
- 二零二五年户外运动装备分期付款合同下载3篇
- 2025年度旅行社旅游线路设计合同4篇
- 我国无菌包装行业消费量已超千亿包-下游需求仍存扩容潜力
- 大数据管理与考核制度大全
- 大学面试后感谢信
- 2022届上海高考语文调研试测卷详解(有《畏斋记》“《江表传》曰…”译文)
- SBT11229-2021互联网旧货交易平台建设和管理规范
- 如何打造顶尖理财顾问团队
- 土壤农化分析课件
- 小区大型团购活动策划
- NEC(新生儿坏死性小肠结肠炎)92273
- 2023年租赁风控主管年度总结及下一年展望
- 开关插座必看的七个安全隐患范文
评论
0/150
提交评论