n++&++n,n–&–n 的区别

  • Post author:
  • Post category:其他




++n

等价于

n=n+1

,n自增1,结果是

左值

,可以放在等号左边:


n=1;++n=1;

结果是:

n=1

说明++n的结果返回给了n,然后1再赋值给n,


n=1;a=++n;

结果是:

a=2,n=2



n++

等价于

n=n+1

,n自增1,但结果是

右值


n=1;n++=1;

报错:

error

说明n++的结果不能再次被赋值(从变量降级为一个内存值???)


n=1;a=n++;

结果是:

a=1,n=2

,说明 n++优先级低于a=n;



左值&右值的区别

(在赋值语句中)


左值(lvalue)

说明此变量指向一个地址,且可以再次被赋值,可以被覆盖,赋值后依然为变量。



右值(rvalue

)则说明此变量已经直接存储到了一块内存空间,而赋值语句只能对变量操作,不能直接对内存空间(常量?)操作,不能再次被覆盖。



例外



n++;

或者

++n;

作为单独的语句出现时,效果都是

n=n+1;

没有区别。



说明

我不知道我想的这些原因是否正确,但是暂时就这么理解即可,可以加深记忆,解决一点点疑惑。

资料:


理解C和C++中的左值和右值



百度知道



版权声明:本文为weixin_42417585原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。