![C++新经典](https://wfqqreader-1252317822.image.myqcloud.com/cover/184/44510184/b_44510184.jpg)
上QQ阅读APP看书,第一时间看更新
2.2.3 运算符优先级问题
运算符优先级规则是:先乘除,后加减,如果优先级相同,则按先算左边,后算右边的方式处理(这叫从左到右结合,当然还有从右到左结合,遇到时再讨论)。如2+3*5、2+8-5,看看如下语句的计算结果:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p54_85247.jpg?sign=1738949133-7BShECDCbkISqXZ6ZeJ7n7LZP5JGPHBi-0-a4414fe15b8df3c7b2936b05f780c113)
当忘记运算符优先级时,可以将某一部分需要优先计算的内容用()括起来,如下面这条语句,就会优先计算3+2的值:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p54_85248.jpg?sign=1738949133-fy8bkUp2eBzXhLF8yanfygxhNjlQwvYD-0-23b9066c92ebc0086dde27978f74c35b)
不同种类运算符进行混合运算时也存在优先级问题,不同种类运算符的优先级如表2.6所示,其中列出了从最高到最低的优先级。读者不必死记硬背,放在手边,需要的时候查阅即可。再次说明:当记不住优先级时,用()将需要优先计算的内容括起来也许是最简便和有效的处理方式。
表2.6 不同种类运算符的优先级
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-T54_85251.jpg?sign=1738949133-yKnWU1aRVLwPVgI58tqwHE8Onv4K9W1F-0-f6194d07ffce0660c0cf6f54fc7e81a6)
那么,例如“a=3+5;”是怎样计算的。这就涉及不同种类运算符优先级问题,不过这个问题等后续讲到赋值运算时会进一步讲解,现在先不用理会。
现在来看一个有点让人为难的考题,看看下面这个表达式是如何计算的:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p55_85255.jpg?sign=1738949133-RhG2qrno84XYEtEBOBW3GprRE2DI1pEt-0-c2524e27377b5c8704c574480d953250)
可以给这个表达式增加一些圆括号来标明运算时的优先级。例如:
![](https://epubservercos.yuewen.com/F329F6/23721607801994206/epubprivate/OEBPS/Images/Figure-p55_85256.jpg?sign=1738949133-UfsVGJfc73ZoFSG4xAkz633FJfOkXDKS-0-a2ae1384351d606af1ebef09b536f9bc)
经此处理,运算的优先级自然就能看清楚了。
这里有许多运算符目前还没有学习到,所以无须了解这些运算符的含义,只需要观察一下运算时的优先级即可。在面试中可能会遇到类似考题来考验面试者对运算符优先级的记忆力,笔者认为这种考题价值不大,因为类似问题,即便无法记忆,也可以通过查询手边的资料快速解决问题。