前言
话说这个真的是合法的吗,csdn有和谷歌搜索引擎和StackOverflow签署用户数据共享协议么lmfao
而且我写这篇文章过程中查资料的工作语言全程使用英文
他还贴心的翻译了一下,展现在旁边的“热度”榜上,我真的哭死
正文
本系列主要是记录面试题,以及本人感觉可以作为面试题考点的东西
为什么++a
是左值而a++
是右值,请从编译原理的文法分析的角度回答
答:首先看现象,++a是先加后返回,a++是先返回后加
也就是说对于编译器待分析的表达式a=++b
会被化简为a=b+1
而先返回后加,类似于a=b b=b+1
不能化简为一个表达式
而在不考虑常量的情况下,左值就是一个表达式或者等价于表达式的东西,b++
在上下文中无法化成一个表达式,所以他是右值
//无法编译,仅供参考
int operator &#