指针左右值问题

指针左右值问题

int a =2;
int* pa=&a;
++pa=&a;
pa++=&a //error 报错

在msvc编译环境下

++pa能作为左值但是pa++不可以;这点要怎么理解呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答
就是等号的左边不能是一个无处安放的计算结果,也不能是一个常量。
将计算结果赋值给计算结果是不被允许的,就像1+2 = 3+4一样,编译器会直接告诉你错了。
  • 我想跑路 提问者 #1

    i+1作为左值应该算是无处安放的计算结果吧


    2022-09-29 20:30:03
  • 是的,就是这个意思

    2022-10-01 12:52:05
山行老师 2022-09-27 12:20:08
先说原则,做左值的只能是变量;
你这里的i++最终结果不是落在变量i上面,是落在i+1这个结果上面,而这个结果是常量,所以不能写i++ = ...这样的语句;
但是++i的结果等价于变量i=i+1,结果落在变量i上面,所以++i = ...是合法的。
  • 提问者 我想跑路 #1

    i+1这个结果上面,而这个结果是常量  这句话不太理解

    2022-09-27 13:47:29
山行老师 2022-09-26 18:50:17
先说原则,做左值的只能是变量;
你这里的i++最终结果不是落在变量i上面,是落在i+1这个结果上面,而这个结果是常量,所以不能写i++ = ...这样的语句;
但是++i的结果等价于变量i,所以++i = ...是合法的。
  • 提问者 我想跑路 #1

    不是++i结果是i=i+1吗?没太理解?

    2022-09-26 22:00:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师