- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.6 其他运算 ( )、[ ]运算符: ( )用来改变表达式的运算次序; [ ]用于表示数组的下标; -、 . 运算符: 用来引用结构成员的运算符; 优先级最高,左结合; 3.6 其他运算 (type)运算符: 形式:(类型)表达式 功能:将表达式强制转换成指定类型; (int)(a+2*0.5) (int)a+2*0.5 int(a+2*0.5) 运算符优先级小结 混合运算及数据类型转换 混合运算: 是指在一个表达式中参与运算的对象不是相 同的数据类型; 整型、单精度型、双精度型数据可以混合运算。且字符型数据可以与整型通用。因此,整型、实型(包括单、双精度)、字符型数据间可以混合运算。 例如:10+’a’+1.5-8765.1234*’b’ 是合法的。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。 混合运算及数据类型转换 数据类型转换: 运算中char型转换为int型,float型转换为doubl型; 低级类型服从高级类型,并进行相应的转换; char-int-unsigned-long-float-double 低-----------------?高 赋值运算中最终结果的类型以赋值运算符左边变量的类型为准; C语言中所有的实数运算都以double进行; 混合运算及数据类型转换 float a=0.5; int b; char c=‘a’; 则下列表达式的类型是 5 + 2 * a – c b = 5 + 2 * a – c ?double ? int 如 i=3;printf (“%d”,++i ); 输出 4 。 若改为 printf (“%d”, i++); 则输出 3 。 如:5++或(a+b)++都是不合法的。 常量的值不能改变, (a+b)++也不可能实现。 (1)自增运算符(++), 自减运算符(--),只能用于整型、字符型和指针型变量,而不能用于常量或表达式。 实际的运算为右结合 (2) ++和--的结合方向是“自右至左”。(右结合性) -(i++) -i++ 按算术运算符的“自左而右”结合为 (-i)++,是不合法的 如原 i=3; 表达式值为 -3 自增、自减运算符 i+++j i+++j, 是 (i++)+j (3)表达式中运算符由多个字符组成,如何组合? C编译在处理时尽可能多地(自左而右)将若干字符组成一个运算符。 (对标识符和关键字也按同一原则处理) 还是 i+(++j) (i++)+j i+(++j) 自增、自减运算符 (续) k = i+++++j; 不能编译通过。 原因是编译器将前两个‘+’处理成自增,接下来又将两个‘+’号处理为自增,故不符合语法。 解决方法:可用空格或括号来表示正确的含义: k=i++ + ++j; 注意:一般不要用这样的语句。 自增、自减运算符 (续) 有的系统中,从左至右求值,输出“3, 3”。 多数系统中对函数参数的求值顺序是自右而左。上面printf函数中要输出两个表达式的值。( i 和 i++), 先计算出i++的值再计算i的值。 因此, 先输出 i++, 值为3,再输出第一个参数 i 的值为4。上面printf函数输出的是 “4,3” 如 i 初值为3, 有函数调用: printf(“%d,%d, i , i++) (4) 函数调用时,实参的求值顺序,C标准无统一规定。 自增、自减运算符 (续) 有的系统中,从左至右求值,输出“3, 3”。 多数系统中对函数参数的求值顺序是自右而左。上面printf函数中要输出两个表达式的值。( i 和 i++), 先计算出i++的值再计算i的值。 因此, 先输出 i++, 值为3,再输出第一个参数 i 的值为4。上面printf函数输出的是 “4,3 如 i 初值为3, 有函数调用: printf(“%d,%d”, i , i++) (4) 函数调用时,实参的求值顺序,C标准无统一规定。 3.3.3 自增、自减运算符 (续) (5) 自增(减)运算符常用于循环语句中使循环变量自动加1。也用于指针变量,使指针指向下一个地址。以后介绍。 main() { int a=1; printf(%d, %d, %d\n,a++,++a,a++); } 输出:3,3,1 3.3.3 自增、自减运算符 (续) (i++)+ (i++)+ (i++) i 原值=3,表达式的值=? 3+4+5=12 实际表达式值为: 表达式运算后 i 值为: 又如:k=(++i)+(++i)+(++i) i 原值=3 先对表达式扫描,对i进行三次自加,i 得 6, 然后进行k=6+6+6
您可能关注的文档
最近下载
- 人教版(2024)一年级数学上册《10的认识》(课件).pptx VIP
- 2024全国职业院校技能大赛GZ106研学旅行赛项规程+赛题 (3).docx VIP
- 八年级英语上册各单元练习题及专题语法习题.doc VIP
- FANUC工业机器人集成359.pptx VIP
- 高温气冷堆核电站三壳组对专用工装及安装方法.pdf VIP
- 【医学】呼吸内科诊疗常规 共(29页).doc VIP
- 公司财务原理 第十一版 习题答案 - Principles of Corporate Finance ,11th edition ,solution.pdf VIP
- 电气控制与S7-1200 PLC应用技术教程郑海春习题答案.docx VIP
- 《网络安全》安全教育PPT课件.pptx VIP
- 《结核病患者外周血淋巴细胞亚群检测及临床应用专家共识》(2020)要点.docx VIP
文档评论(0)