为何a++不可以作为左值而++a能

 a++的运算结果并不是a这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算:   
  a++=5;   甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误   。

左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。

 

可以简单的这么理解(通过C++语法)
你看看前、后++分别是怎样重载的
比如A类中重载两个++吧
A& operator ++ ()
{
++ A.data;
return A;
}

A& operator ++ (int)
{
temp = A.data;
++ A.data;
return temp;
}

后一个是后++
返回的是一个临时变量
当然不能做左值啊

 

++a返回的是a的引用..
a++返回的一个临时变量的引用..

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值