n++&++n,n--&--n 的区别

++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++中的左值和右值
百度知道

猜你喜欢

转载自blog.csdn.net/weixin_42417585/article/details/105135474