老师,左右值还是不太理解
来源:6-9 指针的基本操作三
我想跑路
2022-09-26
int a =2;
int* pa=&a;
++pa=&a;
pa++=&a //error 报错
在msvc编译环境下
++pa能作为左值但是pa++不可以;这点要怎么理解呢?(和课上讲的不一样)
结合顺序是不这样?
++pa=&a;-》(++pa)=&a;
pa++=&a-》(pa)++=&a
写回答
1回答
-
quickzhao
2022-09-27
左值对应有明确地址的一块空间,而右值不是,比如临时对象。你看看这里++在前缀和后缀的实现,前缀实现其实返回的就是对象本身,所以有明确的地址,可以作为左值;而后缀的实现则只是返回一个临时对象,不能做左值。
032022-09-28
相似问题