前置自增与后置自增的区别(++i,i++)

1.  表达式的值不同(这一点想必大多数人都记得)

即++i,i的值自增后,返回i自增后的值; i++,i的值自增,返回的却是i自增前的值

内部具体操作可以看作是这样的

/**
前置自增
*/
{
    i = i+1;
    return i;
}

/**
后置自增
*/
{
    int temp = i;
    i = i+1;
    return temp;
}

如上所示,后置自增除了返回值与前置自增不同以外,还多了一个创建临时对象的步骤,这也就是为什么会有前置自增比后置自增更高效的说法,但据说如果只是像这样简单的对象,现在的编译器都会自动优化,所以两者不会有什么区别。

 

2. 前置自增的表达式是一个左值,而后置自增表达式是一个右值。

何谓左值、右值呢,简单理解就是可以放在赋值号左边的就是左值,不能放在赋值号左边的就是右值

据说还有一个判定方法是其前面可以使用取地址符(&)的就是左值,否则是右值

举个例子

int i = 6;
++i  = 1;  //合法,  最终i的值为1
i++ = 1; //非法

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值