采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
int a =2; int* pa=&a; ++pa=&a; pa++=&a //error 报错
在msvc编译环境下
++pa能作为左值但是pa++不可以;这点要怎么理解呢?(和课上讲的不一样) 结合顺序是不这样? ++pa=&a;-》(++pa)=&a; pa++=&a-》(pa)++=&a
左值对应有明确地址的一块空间,而右值不是,比如临时对象。你看看这里++在前缀和后缀的实现,前缀实现其实返回的就是对象本身,所以有明确的地址,可以作为左值;而后缀的实现则只是返回一个临时对象,不能做左值。
是不是这样理解 ++i=1-> (i=i+1)=1 i++=1->i+1=1 i+1是个临时对象,是个常量不能作为左值?
可以这么理解。
好的,谢谢老师
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.2k 12
1.3k 10
1.2k 9
993 9