x++为什么不能做左值

2009年5月12日 906点热度 1人点赞

x++

1
2
3
4
5
{
    int temp = x;
    x = x + 1;
    return temp; // 返回右值
}

++x

1
2
3
4
{
    x = x + 1;
    return &x; // 返回左值
}

不难看出,x++返回的是临时变量temp, ++x返回x的引用,就是x。
临时变量temp无法寻址,自然也无法存入数据。
退一步讲,如果x++=5能够运行的话,其实执行的结果就是temp=5,而temp在本语句结束之后立即释放,因此该语句是毫无意义的。
同时,从上还能看出,前缀没有中间变量,执行效率更高。

几二木

这个人很懒,什么都没留下