平时工作中其实真正要去判断运算符优先级的次数几乎没有(也许是我目前工作年限或者经历较少的原因),但是在面试题中会经常遇到。以前一直觉得没什么用,后面慢慢的觉得C语言基础真的很重要,也许这就是我能力不足的原因之一吧!OK! 那我就分享下,我如何学习这一块的(主要是难记)
1、 首先C语言运算符有哪些?
2、运算符的优先级
首先不同优先级运算符的结合顺序是按照上图中运算符优先级来的,也就是说()或者 [ ] 一定比 *
的优先级高,搞清这个指针函数(数组)或者函数指针(数组)就可以清楚地分清了,在后面我们说这部分的时候在细说。
然后同一优先级的运算符的结合顺序按照结合方向来判断。例如:
*a++是先执行++运算,再执行 *, 即指针先移动一个位置,在对移动后指针所指位置解引用取值(从右到左)
OK,关于运算符的优先级就说到这里,大家可以在实际代码中实践
最后就是我觉得最重要的,有的同学说照着表我肯定都知道的,考试或者面试的时候遇到咋办呢!!!
我自己有一套觉得记优先级的方法,分享一下!!!
1)括号>单目>双目>三目>赋值运算符>,
2)双目 又分为 算数运算符 关系运算符 逻辑运算符
3)结合方向从右到左的 只有 单目,三目以及赋值运算符
这个方法应该是可以简单记下大部分的。
个人方法只是参考,还是需要在代码中实操才是王道
3、最后贴两个自己面试中遇到的相关题目,大家可以练练手试试