今天上编译原理课时,老师讲了些非常有意思的知识,总结一下,也分享给大家~
先抛出一个小栗子
大家思考一下,i + i - i * (i + i)
这个运算表达式先算哪部分?
此处思考三分钟。。。。
我相信,大多数人和博主一样第一感觉先算括号 里面的,但是理智又告诉我,应该先算左边第一个加号更合适。但是,博主却不能清晰的说出原因。。,,ԾㅂԾ,,
那么我们先来分析,为什么第一感觉会是先算括号里面的呢?
众同学答道:“括号的优先级最高,所以先算括号里面的。”
看着好像。。没什么毛病。。
但是,博主很遗憾的宣布,第一个先运算的是左边的加号。。
为什么呢??(・∀・(・∀・(・∀・*)
事实是这样的:运算符优先级的比较只在相邻的op(运算符)之间进行比较,而总所周知,根据自左向右的结合性,我们再来看上面的小栗子i + i - i * (i + i)
里面,首先比较+