第2章-词法元素2731.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章-词法元素2731.ppt

2.2.3 自增和自减运算及其表达式 1.自增自减运算符 ++自增运算符,使变量的值增1,如i++,使变量i的值增加1。 --自减运算符,使变量的值减1,如i--,使变量i的值减去1。 需要说明的是,自增和自减运算符的运算对象都为变量,不能取常量或表达式。且在书写时中间不能插空格。 自增、自减运算有两种形式: 前置运算:++i, --i。 后置运算:i++, i--。 2.自增及自减运算表达式 两个运算符均为单目运算,优先级别高于一般算术运算,与求负运算同级,结合性同大多数单目运算一样具有右结合性(从右向左结合)。 以自增运算为例,前置运算++i及后置运算i++对于变量i而言,所起的作用是一致的,都相当于i=i+ 1表达式,但变量的i值并不能代表表达式++i或i++的值。 先举例说明: #includestdio.h void main() {int i = 1, j; j = ++i; printf (i = %d ,j = %d \n , i, j ); } 3.自增自减运算表达式的值 运算结果: i = 2, j = 2 再将其中的++i改为i++: j = i++; 运算结果: i = 2, j = 1 例:判断下列自增自减表达式的合法性。5++ (a+b)-- a+++b a +++++b -i-- 前置运算表达式的值:变量增加或减少1之后的值即为表达式的值。即先改变变量的值,后由变量值得到表达式的值。 非法表达式:5++ (a+b) -- a +++++b 合法表达式:a+++b -i-- 后置运算表达式的值:变量改变前的原值即为表达式的值。即先由变量值得到表达式的值,后改变变量的值。 分析: (1)自增自减运算的运算对象只能是变量,不能为常量或表达式,所以5++和(a+b)--为非法表达式。 (2)C语言编译系统在处理表达式时一般先从左到右扫描,将尽可能多的字符组成一个合法运算符,所以a+++b等效于(a++)+b,即该表达式合法;a+++++b等效于((a++)++)+b,即该表达式非法(操作对象不能为表达式)。 (3)自减运算与取负同处一个优先级,结合性从右向左,所以表达式-i--等效于-(i--),即表达式合法。 通过对以上表达式的分析,建议读者在书写表达式时,根据实际情况可以加上括号时尽量加上括号,以增强程序的可读性。 如上式, 结果是14。 又如 : a = 3*5 , a*4 运行结果是 a = 15 而整个表达式的值是60。 2.2.4 逗号运算符和逗号表达式 用 “ , ” 将两个表达式连接起来所构成的表达式称为逗号表达式 例如 : 3+5 , 6+8 逗号表达式的形式 : 表达式 1,表达式 2 求解过程 : 先求表达式1的值,再求表达式2的值, 整个表达式的值是表达式 2 的值。 表达式1 , 表达式2, ... , 表达式n 它的值是 表达式n 的值 逗号表达式一般形式 : 例 : ( a = 3*5 , a* 4 ) , a+5 运行结果 :(1)a=15 (2)( 15,60 ) ===== 值为 60 (3)60,20===整个表达式的值为 20 例 :x = ( a = 3 , 6*3 ) 运行结果 :a为 3 ,x 为 18; 例 :x = a = 3 , 6*a 运行结果 : x 为 3 ,a为 3 注意 1.由于逗号运算符是所有运算符中级别最低的,因此书写表达式时要注意求解的次序。 2. 并非所有的 “,” 都是运算符 例 如 : printf(“%d,%d,%d”, a , b , c) ; ----这里的“,”都只是分隔符。 而printf(“%d,%d,%d”,(a,b,c),b,c);----这里(a,b,c)中的“,”是运算符。 2.2.5 条件运算符和条件表达式 一般形式:表达式1 ? 表达式 2 : 表达式3 执行过程 功能:相当于条件语句,但不能取代一般if语句 条件运算符可嵌套 如 x0?1:(x0?-1:0) 例 if (ab) printf(“%d”,a); else printf(“%d”,b); printf(“%d”,ab?a:b); 例 求 a+|b| printf(“a+|b|=%d\n”,b0?a+b:a-b); 例 (a==b)?’Y’:’N’ (x%2==1)?1:0 (x=0)?x:-x (c=‘a’ c=‘z’)?c-’a’+’A’:c

文档评论(0)

liuxiaoyu98 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档