一级棒(Eachfun)
一级棒 - 读书笔记 - C++ Primer - 优先级、结合性和求值顺序
RSS订阅
优先级、结合性和求值顺序
发表时间:2006-07-19 01:49:54 关键词:C++,MFC,VC,Primer,编程,教程,读书

  说到优先级,我能熟练背出“先乘除,后加减”,之于C++列出的整整19个优先级,每个优先级又包含若干个操作符,我总是看了就头皮发麻。以我的记性,连军旗里哪个大哪个小都背不出来,这几十个操作符——还是饶了我吧。
  记住林锐博士的话:“如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。”(《高质量C++/C编程指南》第26页)这样做最直接的作用是不用记忆了复杂的优先级了,不用记忆并不是因为懒,而是为了更清晰。毕竟程序不只是编给计算机运行的,当我们处在一个多人协作的团体中时,程序的清晰度和精确性比性能要高得多。再说,多加几对括号是不影响运行效率的。
  结合性和求值顺序是容易混淆的两个概念。每一个操作符都规定了结合性,但是只有极少数操作符规定求值顺序。结合性是说如果有多个同级别的操作符,这些操作数该如何分组。比如“1+2+3”究竟分成“(1+2)+3”还是“1+(2+3)”,虽然这两种分组最终没有区别,但不等于所有操作符都不产生区别。即使不产生区别,计算机毕竟是计算机,它只能按死的规范做事,于其给它灵活机制,还不如规定了结合性让它遵守。
  C++只有四个操作符规定了求值顺序,它们是“&&”、“||”、“?:”和“,”,记住这四个操作符并不难。反过来记住其它操作符也不难,难的是在写程序中是否有这个意识。那么多网友讨论“j = i++ + i++ + i++;”的结果,正说明了还有好多人不了解“未定义”的威力。如果不小心使用了依赖于未定义求值程序的语句,将是一个不容易发现并改正的问题。比如“if (a[index++] < a[index]);”

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2008 Eachfun.Com, All Rights Reserved 一级棒网络
苏ICP备05080156号
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!