第3讲 数据类型、运算符与表达式.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结合性:如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向”处理。 如:a-b+c 算符优先级相同,按照结合性:从左向右,先与左边的减号结合,后与右边的加号结合; a-b*c 算符*的优先级高于-; 若运算符两侧的运算对象类型不同时,低类型向高类型转换; 每个运算符都有相应的优先级和结合性; 基本算术运算符都是左结合性(从左向右)。 优先级用于决定运算中的运算顺序,即有多个运算符出现时,哪一个先计算,哪一个后计算。 结合性则决定同一优先级的运算符之间的运算顺序,即是先左后右还是先右后左。 计算表达式例: 2+’A’-1/2.0 1+3/2-1 构造表达式例 2x2+3x-1? ? a+b a-b a+b a-b x+y x-y a+b/a-b ? (a+b)/(a-b) 2*x*x+3*x-1 (*不能省) (a+b)/(a-b)/(x+y)/(x-y) (a+b)/(a-b)/((x+y)/(x-y)) (a+b)/(a-b)/(x+y)*(x-y) 强制类型转换 可以用强制类型转换运算符将一个表达式的值转换成所需类型;一般形式:(类型名) (表达式) 如:(double)a 将a转换为double型 (int)(x+y) 将x+y的值转换为整型 (float)(5%3) 将5%3的值转换成单精度实型 说明:1、(int)(x+y) 与(int)x+y 意义不同 2、 类型转换后得到一个中间值,而原来变量的类型没有发生变化。 精度损失问题 应用举例: main( ) { float x; int i; x=3.6; i=(int) (x); printf (“x=%f, i=%d\n”,x,i); } 运算结果: 一般来讲,当自动转换达不到目的时,可用强制转换。 x=3.600000, i=3 自增、自减运算符 自增运算符:++ 使变量值加1 自减运算符:-- 使变量值减1 两种用法: ++i, --i 先加(减)后用 i++, i-- 先用后加(减) 两种用法对i效果一样,但表达式的值不同。 例:假设i的原值为5: j=++i; j=6 j=i++; j=5 注意: (1)++和--只能用于变量。 如:3++和(a+1)++ 不合法 (2)++和--为右结合性。 (-i)++ -i++ -(i++) ? ?若i的原值是5,则该表达式的值是多少?-5;i=6 若按照(-i)++,则不满足(1)的要求,即++和--只能用于变量,不能作用于表达式,所以不合法; 例:分析执行下列语句后的结果: a = 5; a b c d b = a++; c = --a - b++; d = (a++) - (++b) + c--; 5 5 6 5 0 6 7 ? 6 ? 几种特殊情况: ① k=(i++)+(i++)+(i++) ② i+++j 是 i+(++j) 还是 (i++)+j ? ③ i=3; printf(“%d, %d\n”, i, i++); 4,3 i++虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。 3.9 赋值运算符和赋值表达式 赋值运算符 “=”称赋值运算符,其作用是将赋值号右边表达式的值赋给赋值号左

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档