学习左值和右值。定义是可以“寻址”的任何内容都是左值,否则就是右值。
我检查了运算符优先级,前缀和后缀递增的优先级都比“取地址”运算符高。
对于以下两个例子,有人能解释一下为什么第一个"&++value1"是左值而第二个"&value1++"是右值吗?
我对这两种情况的错误理解是:pValue1指向value1变量。无论value1在建立地址相关性之前还是之后被更改为8,value1变量始终占用一个内存位置,我们可以推导出它的地址,对吗?
我检查了运算符优先级,前缀和后缀递增的优先级都比“取地址”运算符高。
对于以下两个例子,有人能解释一下为什么第一个"&++value1"是左值而第二个"&value1++"是右值吗?
我对这两种情况的错误理解是:pValue1指向value1变量。无论value1在建立地址相关性之前还是之后被更改为8,value1变量始终占用一个内存位置,我们可以推导出它的地址,对吗?
int value1=7;
int *pValue1=&++value1;
int *pValue1 = &value1++;
operator++
返回一个预增副本,而不是被增加对象的引用。 - Fureeish